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

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

2011-03-08 17:23 176 查看
opencv使用cvDFT 傅立叶转换的例子
 
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
4000
    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 . . .

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  system