cvDFT
来源:互联网 发布:mac安装dmg文件失败 编辑:程序博客网 时间:2024/06/14 10:32
傅里叶变换是复数域变换。而一个复数在openCV中需要用双通道来表示,第一通道表示实部,第二通道表示虚部。
如 复数1+2i,1保存在第一通道,2保存在第二通道。
代码示例:
// cvDFT.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <cv.h>
#include <highgui.h>
#ifdef _DEBUG
#pragma comment(lib,"opencv_imgproc220d.lib")
#pragma comment(lib,"opencv_core220d.lib")
#pragma comment(lib,"opencv_highgui220d.lib")
#else
#pragma comment(lib,"opencv_imgproc220.lib")
#pragma comment(lib,"opencv_core220.lib")
#pragma comment(lib,"opencv_highgui220.lib")
#endif
float data1[]={
1,2,
3,4
};
void Show_Mat2D(CvArr* mat,int row,int col);
void main()
{
CvMat *mat_src,*mat_dst,*mat_test1,*mat_test2;
mat_src=cvCreateMat(2,2,CV_32FC2);
mat_dst=cvCreateMat(2,2,CV_32FC2);
mat_test1=cvCreateMat(2,2,CV_32FC1);
mat_test2=cvCreateMat(2,2,CV_32FC1);
cvZero(mat_src);
cvZero(mat_dst);
cvZero(mat_test1);
cvZero(mat_test2);
cvSetData(mat_test1,data1,mat_test1->step);
cvMerge(mat_test1,mat_test2,NULL,NULL,mat_src);/////////至此mat_src完成初始化,
//第一通道为实部,数据为data1,第二通道为虚部,全部为0
///////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////正变换测试
cvDFT(mat_src,mat_dst,CV_DXT_FORWARD);
cvSplit(mat_dst,mat_test1,mat_test2,NULL,NULL);/////将变换之后的实部虚部分开
printf("********************正变换结果:\n");
printf("实部为:\n");
Show_Mat2D(mat_test1,2,2);
printf("虚部为:\n");
Show_Mat2D(mat_test2,2,2);
/////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////反变换测试,将mat_dst反变换回去。
cvZero(mat_src);
cvDFT(mat_dst,mat_src,CV_DXT_INV_SCALE);////////////反变换
cvSplit(mat_src,mat_test1,mat_test2,NULL,NULL);/////将反变换后的实部虚部分开
printf("************反变换结果:\n");
printf("实部为:\n");
Show_Mat2D(mat_test1,2,2);
printf("虚部为:\n");
Show_Mat2D(mat_test2,2,2);
return ;
}
void Show_Mat2D(CvArr* mat,int row,int col)
{
int i,j;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%.3f ",cvGet2D(mat,i,j).val[0]);
}
printf("\n");
}
}
- cvDFT
- OpenCV cvDFT 傅里叶变换
- OpenCV cvDFT 傅里叶变换
- opencv使用cvDFT 傅立叶转换的例子
- opencv使用cvDFT 傅立叶转换的例子
- 第六章 - 图像变换 - 卷积和离散傅里叶变换DFT(cvDFT)
- opencv使用cvDFT 傅立叶转换的例子 频域滤波 低通 高通
- MATLAB的fft2和OpeCV的cvDFT的结果是一样的哦!但为什么有时候会相差255倍呢?
- 单选框值得选择
- CF 231 div2
- ADT的虚拟机慢到不能忍。。。。
- windows与linux网络设置(host-only)
- python 学习笔记
- cvDFT
- 浅谈工作中遇到的一个关于类初始化的问题
- 实现zip压缩解压
- Android 学习(三)下: UI 控件
- window下改svn服务(SVN UUID错误)(SVN UUID变更)(svn relocate报错)
- DOM 遇到的问题 及解决方法
- GDT/IDT
- 2月15日工作记录
- 亚马逊Amazon