您的位置:首页 > 编程语言

读浅墨博客 八 笔记(2)代码

2015-05-30 18:00 267 查看
所有滤波总和:

#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;

Mat src, dst1, dst2, dst3;
int BoxFilterValue = 3;
int MeanBlurValue = 3;
int GaussianBlurValue = 3;
int MedianBlurValue = 3;
int BilateralFiterValue = 3;

static void on_BoxFilter(int,void *);
static void on_MeanBlur(int,void *);
static void on_GussianBlur(int ,void *);
static void on_MedianBlur(int, void *);
static void on_BilateralFiter(int, void *);

int main(){

src = imread("1.jpg");
if (!src.data)
cout << "on,no,can not find the pic" << endl;

dst1.create(src.size(),src.type());
//dst2.create(src.size(), src.type());
//dst3.create(src.size(), src.type());
//dst2.create(src.size(), src.type());
//dst3.create(src.size(), src.type());

imshow("原始图像",src);

namedWindow("滤波");
createTrackbar("方框滤波内和值:", "滤波", &BoxFilterValue, 40, on_BoxFilter);
on_BoxFilter(BoxFilterValue, 0);

createTrackbar("均值滤波内和值:", "滤波", &MeanBlurValue, 40, on_MeanBlur);
on_MeanBlur(MeanBlurValue, 0);

createTrackbar("高斯滤波内和值:", "滤波", &GaussianBlurValue, 40, on_GussianBlur);
on_GussianBlur(GaussianBlurValue, 0);

createTrackbar("中值滤波内和值:", "滤波", &MedianBlurValue, 40, on_MedianBlur);
on_MedianBlur(MedianBlurValue, 0);

createTrackbar("双边滤波内和值:", "滤波", &BilateralFiterValue, 40, on_BilateralFiter);
on_BilateralFiter(BilateralFiterValue, 0);

cout << "开始滚动进行滤波变换吧~~"
<< "\n按下“q”,表示退出" << endl;

while (char(waitKey(1)) != 'q'){}
return 0;

}

static void on_BoxFilter(int, void *){
boxFilter(src, dst1, -1, Size(BoxFilterValue + 1, BoxFilterValue + 1));
imshow("滤波", dst1);

}

static void on_MeanBlur(int, void *){

blur(src, dst1, Size(MeanBlurValue + 1, MeanBlurValue + 1), Point(-1, -1));
imshow("滤波", dst1);

}

static void on_GussianBlur(int, void *){

GaussianBlur(src, dst1, Size(GaussianBlurValue * 2 + 1, GaussianBlurValue * 2 + 1), 0, 0);
imshow("滤波", dst1);
}

static void on_MedianBlur(int, void *){

medianBlur(src, dst1, MedianBlurValue*2+1);
imshow("滤波", dst1);

}

static void on_BilateralFiter(int, void *){
bilateralFilter(src, dst1, BilateralFiterValue, BilateralFiterValue * 2, BilateralFiterValue/2);
imshow("滤波", dst1);

}
注意每个回调函数里的“inshow()”函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: