关于OpenCV滑动条与回调函数的问题剖析

在学习OpenCV的时候,我们经常要使用滑动条,但可能会出现一些如下疑问

问题1:为什么创建滑动条的时候已经指定回调函数了,为什么在下面还要调用一次回调函数?

问题2:为什么有时再次调用回调函数的时候,会有两个形式:on_func(0,0) 与 on_func(滑动条初始化时的值,0)?

解答

解答问题1

因为创建滑动条的时候,第五个参数是指向回调函数的指针,每次滑动位置改变的时候,才会调用回调函数。也就是说,刚开始的时候滑动条没有滑动,不会调用回调函数,所有为了使刚开始启动的程序的时候就能看到初始化的默认处理,就要在下面调用一次回调函数。

解答问题2

on_func(0,0)与on_func(滑动条初始化时的值,0)这两种形式实际没有区别,第二中,只是显示地指出滑动条的默认初始化值,因为,回调函数括号里的第一个形参是int形式的占位,这个int值不会被使用。所以,on_func(滑动条初始化时的值,0)只是为了是程序明了一些,与on_func(0,0)没有本质区别。

 

示例代码如下:

//创建trackbar
createTrackbar("参数值:", "Canny边缘检测-效果图", &g_cannyLowThreshold, 120, on_Canny);
createTrackbar("参数值:", "Sobel边缘检测-效果图", &g_sobelKernelSize, 3, on_Sobel);

//调用回调函数
on_Canny(g_cannyLowThreshold, 0); //不加这句调用,刚开始显示是黑屏
			//,即还没有处理,滑动滑动条才开始处理,多加个调用回调函数,可以初始化处理

on_Sobel(0, 0);  //写第一个参数写0也可以,为了简单明了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值