opencv学习之路(12)、图像滤波

一、图像滤波简介

opencv学习之路(12)、图像滤波

opencv学习之路(12)、图像滤波

二、方框滤波——boxFilter()

opencv学习之路(12)、图像滤波

opencv学习之路(12)、图像滤波

 #include<opencv2/opencv.hpp>
using namespace cv; void main(){
Mat src=imread("E://1.jpg");
Mat dst;
//方框滤波器,-1代表原图像深度,size内核大小,true按权重相加(此时等于均值滤波),false按原像素相加(所以很多像素点都大于了255,如上图所示)
boxFilter(src,dst,-,Size(,),Point(-,-),true);
imshow("src",src);
imshow("dst",dst);
waitKey();
}

opencv学习之路(12)、图像滤波

三、均值滤波——blur()

opencv学习之路(12)、图像滤波

opencv学习之路(12)、图像滤波

四、高斯滤波——GaussianBlur()

opencv学习之路(12)、图像滤波

opencv学习之路(12)、图像滤波

以上是线性滤波(方框,均值,高斯)


以下是非线性滤波(中值,双边)

五、中值滤波——medianBlur(有效去除脉冲噪声和椒盐噪声)

opencv学习之路(12)、图像滤波

opencv学习之路(12)、图像滤波

六、双边滤波——bilateralFilter()

opencv学习之路(12)、图像滤波

 #include<opencv2/opencv.hpp>
using namespace cv; void main(){
Mat src=imread("E://1.jpg");
Mat dst; //boxFilter(src,dst,-1,Size(3,3),Point(-1,-1),true);//方框滤波器
//blur(src,dst,Size(5,5));//均值滤波
//GaussianBlur(src,dst,Size(5,5),1);//高斯滤波
//medianBlur(src,dst,5);//中值滤波
bilateralFilter(src,dst,,10.0,2.0);//双边滤波 imshow("src",src);
imshow("dst",dst);
waitKey();
}

七、滑动条调整内核大小

 #include<opencv2/opencv.hpp>
using namespace cv;
Mat dst;
int value=; void onChange(int,void* param){
Mat src=*(Mat *)param;
if(value%==){
medianBlur(src,dst,value-);//中值滤波的第三个参数为奇数
}
else
{
medianBlur(src,dst,value);
}
imshow("windows",dst);
} void main(){
Mat src=imread("E://1.jpg");
namedWindow("windows",CV_WINDOW_AUTOSIZE);
createTrackbar("滑动条","windows",&value,,onChange,&src);//最后一个参数若设置为0,移动滑动条时会报错
medianBlur(src,dst,);
imshow("windows",dst);
waitKey();
}

opencv学习之路(12)、图像滤波

上一篇:网络编程 -- RPC实现原理 -- NIO多线程 -- 迭代版本V1


下一篇:Android 客户端设计之解决方案