0

我使用以下代码使用 FFTW 和 OpenCV 生成傅立叶变换的可视化。但是,我只能正确获取图像的上半部分。任何人都可以解释代码是否有问题?

fft 存储 fftw_execute 数据。

int nl= fftvis->height; // number of lines
// total number of element per line
int nc= fftvis->width * fftvis->nChannels;

// get the pointer to the image buffer
unsigned char *data= reinterpret_cast<unsigned char *>
(fftvis->imageData);
k =0;
for (int x=1; x<nl; x++) {
    for (int y=0; y<nc; y+= fftvis->nChannels) {
        data[y] = 10*log(sqrt((pow(fft[k++][0],2) + pow(fft[k++][1],2))));
        //k+=1;
    } // end of line

    data+= step;
    // next line
}
4

1 回答 1

0

您需要填充每个通道的 RGB,但是在y+= fftvis->nChannels执行时您正在跨通道数据。
此外,data+= step;会跳过step数据的字节,如果您正确对齐处理,这不是必需的。

于 2012-11-19T23:57:23.160 回答