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

所有滤波总和:

#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()”函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值