opencv3学习之五种滤波器的简单应用
其实以下几种滤波器:方框滤波器、均值滤波器、高斯滤波器、中值滤波器、双边滤波器,呈现出来的效果,肉眼看起来并没有什么区别,感觉都是将图像进行模糊处理。但实际上这几种滤波器适用的情况各不相同,很多时候我们可以扬长避短,选择最合适最优化的滤波器。比如:
//17.boxfilter
/*#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
using namespace cv;
int main(){
Mat image=imread("/Users/oumoemoe/Downloads/S2017.jpg");
namedWindow("1");//如果把窗口名字命名为数字就能正常显示,但如果以汉字来命名则只能显示一张图片,为什么呢?
namedWindow("2");
imshow("1", image);
Mat out;
boxFilter(image, out, -1, Size(5,5));//-1表示从图像的正中心开始,size(5,5)表示以图像中心为中心所处理的邻域范围
imshow("2", out);
waitKey(0);
return 0;
}*/
//18.blur
/*#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main(){
Mat image=imread("/Users/oumoemoe/Downloads/S2017.jpg");
namedWindow("1");
namedWindow("2");
imshow("1", image);
Mat out;
blur(image, out, Size(3,3));
imshow("2", out);
waitKey(0);//blur是标准化后的boxfilter,两者的具体区别是什么呢
return 0;
}*/
//19.GaussianBlur
/*#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main(){
Mat image=imread("/Users/oumoemoe/Downloads/S2017.jpg");
namedWindow("1");
namedWindow("2");
imshow("1", image);
Mat out;
GaussianBlur(image, out, Size(3,3), 0,0);//第四个和第五个参数指的是高斯核函数在X和Y方向上的偏差
imshow("2", out);
waitKey(0);//blur是标准化后的boxfilter,两者的具体区别是什么呢
return 0;
}*/
//21.medianblur
/*#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
using namespace cv;
int main(){
Mat image=imread("/Users/oumoemoe/Downloads/girl.png");
namedWindow("1");
Mat out;
out=image.clone();
medianBlur(image, out, 7);
imshow("1", out);
waitKey(0);
return 0;
}*/
//22.bilateralFilter
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
using namespacecv;
int main(){
Mat image=imread("/Users/oumoemoe/Downloads/girl.png");
namedWindow("1");
Mat out;
bilateralFilter(image, out,25, 25*2,25/2);
imshow("1", out);
waitKey(0);
return0;
}