为应用程序添加 Trackbar!
-
在前面的教程中(关于 tutorial_adding_images 和 tutorial_basic_linear_transform)你可能已经注意到,我们需要为程序提供一些输入,例如 和 。我们通过终端输入这些数据来实现这一点。
-
好了,是时候使用一些漂亮的 GUI 工具了。OpenCV 为你提供了一些 GUI 实用工具(highgui 模块)。 Trackbar 就是其中之一。
-
在本教程中,我们将只修改前面的两个程序,使其从 trackbar 获取输入信息。

在本教程中,你将学习如何:
- 通过 cv::createTrackbar 在 OpenCV 窗口中添加一个 Trackbar
让我们修改在 tutorial_adding_images 教程中编写的程序。我们将让用户通过 Trackbar 输入 的值。
本教程的代码如下所示。你也可以从 这里 下载。 代码见下方示例 本教程的代码如下所示。你也可以从 这里 下载。 代码见下方示例 本教程的代码如下所示。你也可以从 这里 下载。 代码见下方示例
我们只分析与 Trackbar 相关的代码:
-
首先,我们加载两幅将要混合的图像。
-
要创建一个 trackbar,首先必须创建它将要放置的窗口。因此:
-
现在我们可以创建 Trackbar 了:
请注意以下几点(C++ 代码): - 我们的 Trackbar 有一个标签 TrackbarName - 该 Trackbar 位于名为 Linear Blend 的窗口中 - Trackbar 的取值范围为 到 alpha_slider_max(最小值始终为零)。 - Trackbar 的数值保存在 alpha_slider 中 - 每当用户移动 Trackbar 时,回调函数 on_trackbar 都会被调用
最后,我们必须为 C++ 和 Python 代码定义回调函数 on_trackbar,在 Java 中则使用匿名内部类监听器。
请注意(C++ 代码): - 我们使用 alpha_slider 的值(整数)来获得 alpha 的 double 值。 - alpha_slider 在用户每次移动 trackbar 时都会被更新。 - 我们将 src1、src2、dist、alpha、alpha_slider 和 beta 定义为全局变量,
这样它们就能在任何地方使用。
-
我们的程序产生如下输出:
-
作为练习,你也可以为 tutorial_basic_linear_transform 教程中编写的程序添加两个 trackbar。一个用于设置 ,另一个用于设置 。输出可能如下所示:
