#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;
}
filter2D 图像滤波
最新推荐文章于 2024-02-19 08:00:00 发布