opencv中线性和非线性滤波(程序)分析

线性滤波的方框滤波,均值滤波与高斯滤波,属于非线性滤波的中值滤波,双边滤波,对应的程序中都给出了,这是一个综合的测试程序。
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>

using namespace cv;
using namespace std;

Mat img,img1,img2,img3,img4,img5;
int boxValue=3,boxValueMax=40;
int blurValue=3,blurValueMax=40;
int gaussianValue=3,gaussianValueMax=40;
int medianBlurValue=10,medianBlurValueMax=50;
int bilateralFilterValue=10,bilateralFilterValueMax=50;

void on_boxFilter(int,void*)
{
boxFilter(img,img1,-1,Size(boxValue+1,boxValue+1));
imshow(“方框滤波”,img1);
}
void on_blur(int,void*)
{
blur(img,img2,Size(blurValue+1,blurValue+1),Point(-1,-1));
imshow(“均值滤波”,img2);
}
void on_gaussianFilter(int,void*)
{
GaussianBlur(img,img3,Size((gaussianValue2)+1,(gaussianValue2)+1),0,0);
imshow(“高斯滤波”,img3);
}
void on_MedianBlur(int,void*)
{
medianBlur(img,img4,(2medianBlurValue)+1);
imshow(“中值滤波”,img4);
}
void on_BilateralFilter(int,void
)
{
bilateralFilter(img,img5,bilateralFilterValue,bilateralFilterValue*2,bilateralFilterValue/2);
imshow(“双边滤波”,img5);
}
int main()
{
img=imread(“1.jpg”);
img1=img.clone();
img2=img.clone();
img3=img.clone();
img4=img.clone();
img5=img.clone();
imshow(“原图”,img);
namedWindow(“方框滤波”,1);
createTrackbar(“方框参:”,“方框滤波”,&boxValue,boxValueMax,on_boxFilter);
on_boxFilter(boxValue,0);
namedWindow(“均值滤波”,1);
createTrackbar(“均值参:”,“均值滤波”,&blurValue,blurValueMax,on_blur);
on_blur(blurValue,0);
namedWindow(“高斯滤波”,1);
createTrackbar(“高斯参:”,“高斯滤波”,&gaussianValue,gaussianValueMax,on_gaussianFilter);
on_gaussianFilter(gaussianValueMax,0);
namedWindow(“中值滤波”,1);
createTrackbar("中值参: ",“中值滤波”,&medianBlurValue,medianBlurValueMax,on_MedianBlur);
on_MedianBlur(medianBlurValue,0);
namedWindow(“双边滤波”,1);
createTrackbar(“双边参:”,“双边滤波”,&bilateralFilterValue,bilateralFilterValueMax,on_BilateralFilter);
on_BilateralFilter(bilateralFilterValue,0);
while(char(waitKey(0)) != ‘q’) //按下q键释放程序
{}
return 0;
}
谢谢大家的支持,一天一点点!!

猜你喜欢

转载自blog.csdn.net/nbxuwentao/article/details/86094191
今日推荐