Re: [問題] opencv 傅立葉轉換 cvDFT用法

看板C_and_CPP (C/C++)作者 (SaoAn)時間15年前 (2011/03/12 23:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
其實重點就是cvDFT要有兩個channel, 一個存實部, 一個存虛部 我把我的舊code稍微改一下給你看 double a[12] = {19800,20045,20875,20309,20127,20672,21554,22330,23754,24610,33436,34894}; int main(void) { const int picwidth=12; const int picheight=1; IplImage *img_Time = cvCreateImage(cvSize(picwidth,picheight), IPL_DEPTH_64F, 2); IplImage *img_Fourier = cvCreateImage(cvSize(picwidth,picheight), IPL_DEPTH_64F, 2); for(int i=0; i <picheight; i++) for(int j=0; j <picwidth; j++) { ((double*)(img_Time->imageData + img_Time->widthStep*i))[j*2]=a[j]; ((double*)(img_Time->imageData + img_Time->widthStep*i))[j*2+1]=0; } cvDFT(img_Time, img_Fourier, CV_DXT_FORWARD); for(int i=0; i <picheight; i++) for(int j=0; j <picwidth; j++) { cout << ((double*)(img_Fourier->imageData + img_Fourier->widthStep*i))[j*2] << "+j*" << ((double*)(img_Fourier->imageData + img_Fourier->widthStep*i))[j*2+1] << endl; } return 0; } ※ 引述《shihyuyao (Yao)》之銘言: : http://nopaste.csie.org/42414 <----opencv 程式碼 : 跟我用matlab 做fft 算出來實部不一樣 : a = [19800,20045,20875,20309,20127,20672,21554,22330,23754,24610,33436,34894] : b = fft(a) : 請問opencv 只要算一維 dft 要怎麼寫才會跟 matlab fft 算出來結果一致 , : 我弄很久結果還是跟 matlab , 是我上面opencv 程式碼寫錯? : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.161.183.254
文章代碼(AID): #1DUv3bap (C_and_CPP)
文章代碼(AID): #1DUv3bap (C_and_CPP)