filter2D 图像滤波

#include <stdio.h>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	Mat srcImg, dstImg;

	// 读取图像
	char* filename = "lena.jpg";
	srcImg = imread(filename, 1);
	if (srcImg.empty())
	{
		cout << "No Data!--------the error of reading image" << endl;
		return -1;
    };

	// 滤波器参数
	Mat kernel;
	Point anchor;
	double delta;
	int kernel_size;
	int ddepth;

	// 初始化滤波器
	anchor = Point(-1, -1);
	delta = 0;
	ddepth = -1;

	// 结果显示窗口
	char* windowName = "Filter Demo";
	namedWindow(windowName, CV_WINDOW_AUTOSIZE);

	//  每隔1秒换一个不同大小的滤波器
	int ind = 0;

	int c = 0;
	while(true)
	{	
		// 按'ESC'可退出程序
		c = waitKey(1000);
		if (27 == (char)c)
		{
			break;
		}

		// 给滤波器赋值,将核的大小设置为 [3,11]
		kernel_size = 3 + 2 * (ind % 5);
		kernel = Mat::ones(kernel_size, kernel_size, CV_32F) / (kernel_size * kernel_size);
	
		// 使用滤波器对图像滤波
		filter2D(srcImg, dstImg, ddepth, kernel, anchor, delta, BORDER_DEFAULT);

		imshow(windowName, dstImg);

		ind++;
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值