opencv 频率域滤波实例

先上参考链接:http://blog.csdn.net/qq_19764963/article/details/51209970

http://www.cnblogs.com/TonyHome/p/4010116.html

这里给出高斯滤波器的实例,关于傅立叶变换的详细步骤,可以看上一篇博客,这里不做过多介绍了

opencv 频率域滤波实例_第1张图片

 

#include
#include
using namespace std;
using namespace cv;
int main(int a,char**p)
{
	Mat input=imread(p[1],CV_LOAD_IMAGE_GRAYSCALE);
        //这是在ubuntu上运行的,p[1]为控制台给出的参数,即图片路径
       //如果不知道怎么传入参数,可以直接改为
        //Mat input=imread("image.jpg",CV_LOAD_IMAGE_GRAYSCALE);
        //image.jpg必须放在当前目录下,image.jpg即为输入图片
        imshow("input",input);
	int w=getOptimalDFTSize(input.cols);
	int h=getOptimalDFTSize(input.rows);
	Mat padded;
	copyMakeBorder(input,padded,0,h-input.rows,0,w-input.cols,BORDER_CONSTANT,Scalar::all(0));
	padded.convertTo(padded,CV_32FC1);
	imshow("padded",padded);
	for(int i=0;i(i);
		for(int j=0;j(i);
		float*q=gaussianSharpen.ptr(i);
		for(int j=0;j


opencv 频率域滤波实例_第2张图片

 

运行结果如图所示

你可能感兴趣的:(opencv)