2012-05-03 82 views
1

我是非常新的opencv.I需要將matlab代碼轉換爲opencv.i在matlab中有使用fft的問題有一維矩陣a.and我將在下面給出fft。如何將matlab中的fft函數轉換爲cvDft在opencv中

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.while了我要去使用cvDFT這一個結果是differnt.please幫我下面的一些example..my 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); 
    } 
+0

您還可以添加OpenCV代碼的輸出嗎? –

回答

0

在第一個示例中,您似乎正在打印結果中每個複合值的大小。但在第二個例子中,您似乎正在打印複雜值的每個分量的絕對值(例如,X和Y而不是長度或斜邊)。