Skip to content

为应用程序添加 Trackbar!

  • 在前面的教程中(关于 tutorial_adding_images 和 tutorial_basic_linear_transform)你可能已经注意到,我们需要为程序提供一些输入,例如 α\alpha 和 betabeta。我们通过终端输入这些数据来实现这一点。

  • 好了,是时候使用一些漂亮的 GUI 工具了。OpenCV 为你提供了一些 GUI 实用工具(highgui 模块)。 Trackbar 就是其中之一。

  • 在本教程中,我们将只修改前面的两个程序,使其从 trackbar 获取输入信息。

Adding_Trackbars_Tutorial_Trackbar.png

在本教程中,你将学习如何:

  • 通过 cv::createTrackbar 在 OpenCV 窗口中添加一个 Trackbar

让我们修改在 tutorial_adding_images 教程中编写的程序。我们将让用户通过 Trackbar 输入 α\alpha 的值。

本教程的代码如下所示。你也可以从 这里 下载。 代码见下方示例 本教程的代码如下所示。你也可以从 这里 下载。 代码见下方示例 本教程的代码如下所示。你也可以从 这里 下载。 代码见下方示例

我们只分析与 Trackbar 相关的代码:

  • 首先,我们加载两幅将要混合的图像。

  • 要创建一个 trackbar,首先必须创建它将要放置的窗口。因此:

  • 现在我们可以创建 Trackbar 了:

请注意以下几点(C++ 代码): - 我们的 Trackbar 有一个标签 TrackbarName - 该 Trackbar 位于名为 Linear Blend 的窗口中 - Trackbar 的取值范围为 00 到 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。一个用于设置 α\alpha,另一个用于设置 betabeta。输出可能如下所示:

Adding_Trackbars_Tutorial_Result_0.jpg Adding_Trackbars_Tutorial_Result_1.jpg