繁体   English   中英

如何在opencv中将Matlab fft函数转换为cvDft

[英]how to Convert Matlab fft function to cvDft in opencv

我对opencv非常陌生。我需要将代码从matlab转换为opencv。我在matlab中使用fft有问题。我有一个一维矩阵a。我将在下面给出fft的应用。

a = [0;0;0;0;0;0;0;0;0.09707;0.0998;0.1202;-0.1606;-0.0913;0.1523;0.1288];
c = abs(fft(a,15));
c >>     0.3463
    0.1056
    0.3608
    0.5705
    0.4232
    0.2407
    0.1486
    0.1488
    0.1488
    0.1486
    0.2407
    0.4232
    0.5705
    0.3608
    0.1056

C是我的结果,这是我从matlab获得的。而我将为此使用cvDFT时,结果是不同的。请帮助我提供一些示例..我的c代码在下面给出...

CvMat* fftin = cvCreateMat(nn,1,CV_64FC2);
CvMat* fftout = cvCreateMat(nn,1,CV_64FC2);
cvZero(b);    ////consider a hav the value of mat b is  empty for imgin
cvMerge(a,b,NULL,NULL,fftin);
cvDFT(fftin,fftout,CV_DXT_FORWARD,0);
cvSplit(fftout,out_real,out_img,0,0);
    for (int i = 0;i<out_real->rows;i++)
    {
        double val11= cvGetReal2D(out_real,i,0);
        double val12= cvGetReal2D(out_img,i,0);
        val11 = abs(val11);
        val12 = abs(val12);
        printf("DFT value is:%f  %f\n",val11,val12);
        cvSetReal2D(C_out,i,0,val11);
    }

在第一个示例中,您似乎正在打印结果中每个复数值的大小。 但是在第二个示例中,您似乎正在打印复数值的每个分量的绝对值(例如,用X和Y代替长度或斜边)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM