为程序界面添加滑动条
-
在以前的教程中 (例如 linear blending 和 brightness and contrast adjustments)你有可能注意到需要 input 一些数值到我们的程序中, 例如 和 。我们会在代码中输入这些数据来配合程序的运行。
-
好, 下面来介绍所要用到的一个 GUI 中的工具. OpenCV 提供的 GUI 库在(highgui.h)里. 这是一个 滑动条 的样子
-
在这里教程指导我们修改以前的方案,以便从滑动条中获得那些需要输入数据.
程序说明
我们只分析关于滑动条的那段代码:
#.首先, 我们加载了两个图像, 目的是把它们混合显示.
#.在创建滑动条之前, 我们要先创建一个窗体,以便把创建的滑动条放置在上面:
-
现在可以创建滑动条了:
记住下面的参数介绍:
- 在标签中显示的文字(提示滑动条的用途) TrackbarName
- 创建的滑动条要放置窗体的名字 “Linear Blend”
- 滑动条的取值范围从 到 alpha_slider_max (最小值只能为 zero).
- 滑动后的值存放在 alpha_slider 变量里
- 每当滑动条的值改变, 就会调用 on_trackbar 回调函数
-
最后, 我们还要定义这个回调函数 on_trackbar 来实现我们想要的结果
注意回调函数中的整型与双精度型的转换:
- 从滑动条中获取的整型值 alpha_slider (integer) 要转换为双精度类型 alpha.
- alpha_slider 的值会在滑动条滑动后被修改.
- 我们所定义的 src1, src2, dist, alpha, alpha_slider 和 beta 都是全局变量, 因此也可以在回调函数中使用.
结果
-
下图是程序的运行结果:
-
也可以使用其它方式验证, 你可以用 改变图像的对比度和亮度 中的例程实现两个滑动条. 一个控制 另一个控制 . 可能的输出会是下面的样子: