报错原因:
1、imread函数读入默认参数为1,即彩色三通道图像,而我们要指定参数为0,读入灰度图像
2、在进行傅里叶变换前要将图像数据类型转为CV_32F,因为默认灰度图像类型为CV_8U
正确代码:
#include <iostream>
#include<stdio.h>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat blur_img = imread("lena_noise.bmp",0);
imshow("原始图像", blur_img);
blur_img.convertTo(blur_img,CV_32F);
Mat G;
dft(blur_img, G, DFT_COMPLEX_OUTPUT);
waitKey();
return 0;
}