【问题标题】:OpenCV: Why is one trackbar shorter than others?OpenCV:为什么一个 trackbar 比其他的短?
【发布时间】:2022-11-21 09:40:35
【问题描述】:

我遇到了一个奇怪的问题,希望有人向我解释一下,这样我以后就可以避免了。当我放置多个轨迹条(在我的例子中是 6 个)时,最后一个轨迹条要短得多。这是基本代码:

import cv2

def nothing(arguments):
    pass

cv2.namedWindow('TrackBars')
cv2.resizeWindow('TrackBars', 500, 300)
cv2.createTrackbar('Slider 1', 'TrackBars', 0, 255, nothing)
cv2.createTrackbar('Slider 2', 'TrackBars', 0, 255, nothing)
cv2.createTrackbar('Slider 3', 'TrackBars', 0, 255, nothing)
cv2.createTrackbar('Slider 4', 'TrackBars', 0, 255, nothing)
cv2.createTrackbar('Slider 5', 'TrackBars', 0, 255, nothing)
cv2.createTrackbar('Slider 6', 'TrackBars', 0, 255, nothing)
cv2.waitKey(0)

我注意到将窗口变大可以解决问题:

cv2.resizeWindow('TrackBars', 500, 320)

尽管下面有很多空间,但我认为可能是窗口裁剪了轨迹栏,使其表现得很奇怪。但是,在准备要在此处发布的代码时,我发现即使有 2 或 3 个轨迹栏被窗口裁剪,也能正常工作。只有当有 4 个或更多时才会出现此行为。

import cv2

def nothing(arguments):
    pass

cv2.namedWindow('TrackBars')
cv2.resizeWindow('TrackBars', 500, 60)
cv2.createTrackbar('Slider 1', 'TrackBars', 0, 255, nothing)
cv2.createTrackbar('Slider 2', 'TrackBars', 0, 255, nothing)
cv2.waitKey(0)

这里发生了什么?为什么其中一个 trackbar 更短,但只有当有很多 trackbar 时才更短?


附加信息:

  • 打开简历:4.6.0.66
  • 操作系统: 视窗 10
  • HighGUI后台: WinAPI

【问题讨论】:

  • 你能分享你的opencv版本吗?
  • opencv-python 4.6.0.66
  • 什么操作系统和什么 HighGUI 后端? |我可以在 Windows 上重现该问题,多个版本的 OpenCV 至少可以追溯到 3.3。
  • 我正在使用 Win10。我什至不知道 HighGUI 是什么,所以无论默认值是什么,都可能是这样。
  • 谢谢。 JFYI HIghGUI(高级 GUI 的缩写)是实现您在此处使用的功能的 OpenCV module 的名称。默认情况下,Windows 构建使用 WinAPI,所以这就是你的情况。 |请edit你的问题并在那里添加这些细节。

标签: python opencv


【解决方案1】:

这是 OpenCV 中的一个错误,似乎已经存在了一段时间。经过几个小时的挖掘(并在此过程中发现了代码中的其他一些问题),我想我已经抓住了它并提交了一个 bug report 并提出了解决方案。我将在不久的将来提出拉取请求,希望这可以在 4.7.0 版本中得到解决。

总结一下这个问题:trackbar 控件被添加到工具栏控件,随着更多控件的添加,它会垂直增长。由于在创建控件时主窗口的大小是固定的,因此工具栏未占用的剩余“客户区”会逐渐缩小,直到没有剩余空间(因此其大小变为 0)。

错误在于,为了设置轨迹栏控件的宽度,使用了剩余“客户区”的宽度。一旦“客户区”缩小为零,它的大小变为 0,Windows 将使用其他值作为轨迹栏的默认宽度。

使用工具栏的宽度(始终可用)可以解决问题。

应用该修复程序后,我可以获得以下信息:


更新:许多修复也将应用于 3.4 分支。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2010-10-25
    相关资源
    最近更新 更多