您的位置:首页 > 运维架构

opencv使用cvDFT 傅立叶转换的例子

2010-05-30 11:07 295 查看
int main(int argc, char* argv[])
{

unsigned int i;
CvMat* s = cvCreateMat(1,32,CV_32FC1);
CvMat* d = cvCreateMat(1,32,CV_32FC1);
CvMat* s2 = cvCreateMat(1,32,CV_32FC1);
for(i=0;i<32;i++)
cvSetReal2D(s,0,i,i);

//显示一下输入信号
for(i=0;i<32;i++)
printf("%6.2f ",cvGetReal2D(s,0,i));
printf(" ");

//DFT 离散傅立叶变换
cvDFT(s,d,CV_DXT_FORWARD);     //CV_DXT_FORWARD 代表了正变换:空域-〉频域

printf("The result of DFT: ");
for(i=0;i<32;i++)
printf("%6.2f ",cvGetReal2D(d,0,i));

//DFT 离散傅立叶逆变换
cvDFT(d,s2,CV_DXT_INVERSE); //逆变换
printf(" The result of IDFT: ");
for(i=0;i<32;i++)
printf("%6.2f ",cvGetReal2D(s2,0,i));
printf(" ");

system("pause");

return 0;

}


 

结果:

0.00    1.00    2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00
10.00   11.00   12.00   13.00   14.00   15.00   16.00   17.00   18.00   19.00
20.00   21.00   22.00   23.00   24.00   25.00   26.00   27.00   28.00   29.00
30.00   31.00
The result of DFT:
496.00  -16.00  162.45  -16.00   80.44  -16.00   52.74  -16.00   38.63  -16.00
29.93  -16.00   23.95  -16.00   19.50  -16.00   16.00  -16.00   13.13  -16.00
10.69  -16.00    8.55  -16.00    6.63  -16.00    4.85  -16.00    3.18  -16.00
1.58  -16.00
The result of IDFT:
0.00   32.00   64.00   96.00  128.00  160.00  192.00  224.00  256.00  288.00
320.00  352.00  384.00  416.00  448.00  480.00  512.00  544.00  576.00  608.00
640.00  672.00  704.00  736.00  768.00  800.00  832.00  864.00  896.00  928.00
960.00  992.00
Press any key to continue . . .

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hardVB/archive/2007/02/06/1503160.aspx
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  system