前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV中的createTrackbar函数

OpenCV中的createTrackbar函数

作者头像
zy010101
发布2020-03-19 16:51:58
1.5K0
发布2020-03-19 16:51:58
举报
文章被收录于专栏:程序员

在OpenCV中,我们常常需要调节卷积核的大小(邻域的大小)或者是亮度,对比度的调整。这时候如果我们通过手动修改是非常麻烦的。这时候使用OpenCV提供的createTrackbar函数就方便了许多。

createTrackbar函数

createTrackbar函数创建一个滑动条,并且当你滑动的时候可以触发回调函数。这个机制其实类似与Windows下的消息回调机制或者是Qt提供的信号槽机制。当你滑动这个条的时候,回调函数才会被调用。其实就是一种软件中断技术。我们现在来看一下createTrackbar函数的原型。

代码语言:javascript
复制
int createTrackbar(const String& trackbarname, const String& winname,
                              int* value, int count,
                              TrackbarCallback onChange = 0,
                              void* userdata = 0);

参数1:滑动条轨迹名;

参数2:滑动条依附的窗口名;

参数3:滑块的位置,创建时,滑块初始位置就是这个变量当前的值;

参数4:轨迹的最大值;

参数5:回调函数;

参数6:默认0,用户传给回调函数的数据,如果第三个值为全局变量,忽略这个值.;如果使用第6个参数,则作为参数传给回调函数的usrdata。

我们来看一段具体的代码。

代码语言:javascript
复制
#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>

using namespace cv;

Mat src;
Mat dst;


//createTrackbar的回调函数
void myMedianBlur(int ksize, void* p);

int main()
{
	int kmin = 0;
	int kmax = 50;
	src = imread("C:/Users/zhou_/Desktop/3.jpg");
	if (!src.data)
	{
		perror("load failed:");
		exit(0);
	}
	imshow("src", src);

	namedWindow("中值滤波去除椒盐噪声");

    //需要注意这里,没有这行运行之后不是马上显示中值滤波结果,而是需要拖到滑动条才行
    //这也切实体现了createTrackbar函数去调用回调函数的机制
	myMedianBlur(kmin,NULL);

	createTrackbar("参数", "中值滤波去除椒盐噪声", &kmin, kmax, myMedianBlur);

	waitKey(0);
	return 0;
}
void myMedianBlur(int ksize, void* p)
{
	medianBlur(src, dst, ksize * 2 + 1);
	imshow("中值滤波去除椒盐噪声", dst);
}

运行结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • createTrackbar函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档