OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
向我们的应用程序添加滑动条!

下一个教程: 使用GDAL读取地理空间栅格文件

原始作者Ana Huamán
兼容性OpenCV >= 3.0
  • 在之前的教程中(关于使用OpenCV添加(混合)两幅图像改变图像的对比度和亮度!),您可能已经注意到我们需要给程序一些输入,例如 \(\alpha\) 和 \(beta\)。我们通过在终端中输入这些数据来完成。
  • 现在是时候使用一些花哨的GUI工具了。OpenCV为您提供了一些GUI实用程序(highgui模块)。一个例子就是轨迹条(Trackbar)
  • 在本教程中,我们将修改之前的两个程序,使它们从轨迹条获取输入信息。

目标

在本教程中,您将学习如何

代码

让我们修改在教程使用OpenCV添加(混合)两幅图像中创建的程序。我们将让用户通过轨迹条输入 \(\alpha\) 值。

解释

我们只分析与轨迹条相关的代码。

  • 首先,我们加载两幅图像,它们将被混合。
  • 要创建轨迹条,我们首先必须创建它将位于的窗口。所以:
  • 现在我们可以创建轨迹条了:

请注意以下几点(C++代码):

  • 我们的轨迹条有一个标签TrackbarName
  • 轨迹条位于名为Linear Blend的窗口中。
  • 轨迹条的值将在 \(0\) 到alpha_slider_max的范围内(最小限制始终为)。
  • 轨迹条的数值存储在alpha_slider中。
  • 无论用户何时移动轨迹条,回调函数on_trackbar都会被调用。

最后,我们必须为C++和Python代码定义回调函数on_trackbar,在Java中使用匿名内部类监听器。

请注意(C++代码):

  • 我们使用alpha_slider(整数)的值来获取alpha的双精度值。
  • alpha_slider在用户每次拖动轨迹条时都会更新。
  • 我们将src1src2distalphaalpha_sliderbeta定义为全局变量,以便它们可以在任何地方使用。

结果

  • 我们的程序产生以下输出:
  • 作为练习,您还可以为在改变图像的对比度和亮度!中创建的程序添加两个轨迹条。一个轨迹条用于设置 \(\alpha\),另一个用于设置 \(\beta\)。输出可能看起来像这样: