Re: [問題] opencv 傅立葉轉換 cvDFT用法
其實重點就是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
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章