OpenCV  4.10.0
开源计算机视觉
加载...
正在搜索...
无匹配内容
向应用程序添加轨迹栏!

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

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

目标

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

代码

让我们修改教程 使用 OpenCV 叠加(混合)两幅图像 中创建的程序。我们将允许用户使用轨迹栏输入 \(\alpha\) 值。

解释

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

  • 首先,我们加载两幅图像,这两幅图像将混合在一起。
  • 要创建轨迹栏,我们必须先创建打算放置轨迹栏的窗口。所以
  • 现在我们可以创建轨迹栏了

注意以下内容(C++ 代码)

  • 我们的轨迹栏有一个标签TrackbarName
  • 轨迹栏位于名为线性混合的窗口中
  • 轨迹栏值介于 \(0\) 至 alpha_slider_max 之间(最小限制始终为)。
  • 轨迹栏的数值存储在alpha_slider
  • 每当用户移动轨迹栏时,就会调用回调函数on_trackbar

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

请注意(C++ 代码)

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

结果

  • 我们的程序产生以下输出
  • 作为一种练习,您还可以在 改变图像对比度和亮度!中制作的程序中添加两个轨迹栏。一个轨迹栏可用于设置 \(\alpha\),另一个用于设置 \(\beta\)。输出可能如下所示