opencv - 使用opencv进行频域傅里叶变换

标签 opencv

我正在尝试在频域中实现傅立叶变换。 我相应地使用了 getOptimalDFTSize ,并以更大的图像复制了图像和掩模,适合傅立叶变换。我使用了 here 中的示例代码作为引用。
现在,我必须分离实部和虚部,并执行图像虚部与掩模虚部的像素乘法,对于实部也是如此。但是当我尝试这样做时,我收到以下错误消息:

OpenCV Error: Assertion failed (type == srcB.type() && srcA.size() == srcB.size()) in mulSpectrums, file /build/buildd/opencv-2.1.0/src/cxcore/cxdxt.cpp, line 1855 /build/buildd/opencv-2.1.0/src/cxcore/cxdxt.cpp:1855: error: (-215) type == srcB.type() && srcA.size() == srcB.size() in function mulSpectrums

代码如下:

//fourier transfromation of real and imaginary part
Mat complex_image, real_image, complex_mask, real_mask;

cv::dft(new_image, complex_image, DFT_COMPLEX_OUTPUT);
cv::dft(new_image, real_image, DFT_REAL_OUTPUT);

cv::dft(new_mask, complex_mask, DFT_COMPLEX_OUTPUT);
cv::dft(new_mask, real_mask, DFT_REAL_OUTPUT);



//pixelwise multiplication
Mat multiplied_complex, multiplied_real;
cv::mulSpectrums(complex_image, complex_mask, multiplied_complex, DFT_COMPLEX_OUTPUT );
cv::mulSpectrums(real_image, real_mask, multiplied_real, DFT_REAL_OUTPUT);

我在这里做错了什么?

最佳答案

图像和蒙版应具有相同的尺寸(宽度和高度)和类型(很可能这是问题)。因此,如果它是不同的类型,您需要转换其中之一,以便它们具有相同的类型。

关于opencv - 使用opencv进行频域傅里叶变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612074/

相关文章:

python - 快速截图 Winapi 和 Opencv

opencv - Haar级联生成的文件太小

python-3.x - 如何使图像中所有文本的强度(暗度)达到一个级别?

opencv - 构建支持 CUDA 的 OpenCV

android - Unity android中的水平面检测

opencv - 计算描述符和关键点时出现SURF_CUDA错误

python - 如何提高YOLOv3检测时间? (OpenCV + Python)

c++ - 显示图像第 2 版

python - 使用python opencv检测刻度线

java - 使用 OpenCV 的 Android 光学字符识别