opencv使用cvDFT 傅立叶转换的例子 频域滤波 低通 高通

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

在OpenCV中使用cvDFT 傅立叶转换的例子源码及其测试结果
TAG:  OpenCV   傅立叶转换   cvDFT  
 

 

 
       
  1. int main(int argc, char* argv[]) 
  2.     unsigned int i; 
  3.     CvMat* s = cvCreateMat(1,32,CV_32FC1); 
  4.     CvMat* d = cvCreateMat(1,32,CV_32FC1); 
  5.     CvMat* s2 = cvCreateMat(1,32,CV_32FC1); 
  6.     for(i=0;i<32;i++) 
  7.         cvSetReal2D(s,0,i,i); 
  8.  
  9.     //显示一下输入信号 
  10.     for(i=0;i<32;i++) 
  11.         printf("%6.2f ",cvGetReal2D(s,0,i)); 
  12.     printf(" "); 
  13.  
  14.     //DFT 离散傅立叶变换 
  15.     cvDFT(s,d,CV_DXT_FORWARD);     //CV_DXT_FORWARD 代表了正变换:空域-〉频域 
  16.  
  17.     printf("The result of DFT: "); 
  18.     for(i=0;i<32;i++) 
  19.         printf("%6.2f ",cvGetReal2D(d,0,i)); 
  20.  
  21.     //DFT 离散傅立叶逆变换 
  22.     cvDFT(d,s2,CV_DXT_INVERSE); //逆变换 
  23.     printf(" The result of IDFT: "); 
  24.     for(i=0;i<32;i++) 
  25.         printf("%6.2f ",cvGetReal2D(s2,0,i)); 
  26.     printf(" "); 
  27.  
  28.     system("pause"); 
  29.  
  30.     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 . . .

你可能感兴趣的:(C/C++,资源帖)