实现功能:图像模糊、滤波
代码实现:
/****************************
功能:图像模糊、滤波
****************************/
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst1,dst2,dst3,dst4;
src = imread("C:/usr/opencv-test/Testpictures/sight.jpg");
if (src.empty())
{
printf("load image failed!\n");
return -1;
}
namedWindow("input image", WINDOW_AUTOSIZE);
imshow("input image", src);
blur(src, dst1, Size(5, 5), Point(-1, -1)); //均值滤波
imshow("image blur", dst1);
GaussianBlur(src, dst2, Size(5, 5), 11, 11); //高斯滤波
imshow("image gaussianblur",dst2);
//降噪(椒盐噪声)
Mat src3 = imread("C:/usr/opencv-test/Testpictures/jiaoyan.png"); //jiaoyan.png带椒盐噪声的图片
imshow("src3 image", src3);
medianBlur(src3, dst3, 3); //中值滤波
imshow("medianblur image", dst3);
bilateralFilter(src3, dst4, 15, 150, 3); //双边滤波
imshow("bilateralFilter image", dst4);
//双边模糊基础上再加一个对比度增强
Mat dst5;
Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(dst4, dst5, -1, kernel, Point(-1, -1), 0);
imshow("bilateralFilter+contrast image", dst5);
waitKey(0);
return 0;
}
执行效果: