如何在 2D 矢量中使用开放式 DFT
how to use open dft in 2d vector
我想
问一下如何使用opencv中的dft函数来用2d向量进行傅里叶变换。
我的代码有错误...
谢谢大家
//2d vector in here v1 and v2
//vector size is 1000*1000
//i have to do about 600 images in this process
for (int k = 0; k < 600; k++){
vector <vector <complex < double >>> v1(InputWidth, vector<complex < double >>(InputHeight));
vector <vector <complex < double >>> v2(InputWidth, vector<complex < double >>(InputHeight));
for (int i = 0; i < InputWidth; i++) {
int tempIndex = i*InputHeight;
for (int j = 0; j < InputHeight; j++)
{
int Correction_value = ProjectionImage[k]->data.s[tempIndex + j] * meshGrid[tempIndex + j];
ProjectionImage[k]->data.s[tempIndex + j] = Correction_value;
//v1 is an image
v1[i][j] = Correction_value;
}
}
//error happen in here
dft(v1, v2, DFT_COMPLEX_OUTPUT);
//do frequency filter
for (int i = 0; i < InputWidth; i++) {
for (int j = 0; j < InputHeight; j++)
{
v2[i][j] *= filter_2D[i][j];
}
}
//inverse fourier transform
idft(v2, v1, DFT_COMPLEX_OUTPUT);
}
错误信息
这里发生的事情是,你创建了一个指向其他向量的指针std::vector
。这些其他矢量包含像素数据。但这些数据不一定是连续的。图像的每一行(或每列(都存储在其自己的内存段中。OpenCV希望所有像素都在同一内存段中。
简而言之,只需将您的像素数据复制到OpenCV支持的形式,例如cv::Mat
。
相关文章:
- OpenCV C++,难以理解DFT的起始代码
- fftw:为什么我的 2D DFT 输出与每行的 1D DFT 输出不同?
- 根据定义计算DFT <complex>(C++
- DFT(离散傅里叶变换)与C++代码
- 我不明白使用opencv使用dft的事情
- 开放式阅读WAV文件lib
- 矢量垫的开放式CV切片
- 在 Linux 上实施英特尔 MKL 的 DFT 时"Segmentation fault"
- 如何在 2D 矢量中使用开放式 DFT
- 开放式颜色多边形表面的最简单方法
- 开放式AldistanceModel增益/衰减
- 如何在cv::dft中指定FFT长度,就像在Python numpy.FFT.rfft中一样
- 比numpy/scipy openblas慢性 mkl或开放式布拉斯
- 通过HTTP(通过FFMPEG)流式开放式帧缓冲器
- MATLAB与DFT中的FFT2在OpenCV C 速度比较中
- 使用DFT进行卷积
- 最小值/PIP用于开放式图
- 统一的值和开放式着色器
- 开放式CV相机校准过程
- Computing DFT by definition with C++