#include<opencv2\opencv.hpp>
#include<highgui.h>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
// read image
Mat src = imread("C:/Users/qxq/Pictures/image/fox.jpg");
Mat dst;
if (src.empty())
{
printf("Could not load image...");
return -1;
}
namedWindow("input_image", CV_WINDOW_AUTOSIZE);
imshow("input_image", src);
//中值滤波
medianBlur(src, dst, 3);
namedWindow("median_filter_title", CV_WINDOW_AUTOSIZE);
imshow("median_filter_title", dst);
//双边滤波
Mat bi_dst;
bilateralFilter(src, bi_dst, 15, 150, 3);
namedWindow("bilate_filter", CV_WINDOW_AUTOSIZE);
imshow("bilate_filter", bi_dst);
//高斯滤波
Mat Gs_dst;
GaussianBlur(src, Gs_dst, Size(3, 3), 3, 5);
namedWindow("GaussianBlur_filter", CV_WINDOW_AUTOSIZE);
imshow("GaussianBlur_filter", Gs_dst);
//均值滤波
Mat blur_dst;
blur(src, blur_dst, Size(3, 3), Point(-1, -1));
namedWindow("blur_filter", CV_WINDOW_AUTOSIZE);
imshow("blur_filter", blur_dst);
//掩模操作 filter2D 提升对比度
Mat resultImg;
Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(dst, resultImg, -1, kernel, Point(-1, -1), 0);
namedWindow("filter2D", CV_WINDOW_AUTOSIZE);
imshow("filter2D", resultImg);
waitKey(0);
return 0;
}