【问题标题】:OpenCV doesn't resize window (even when using WINDOW_NORMAL)OpenCV 不会调整窗口大小(即使使用 WINDOW_NORMAL)
【发布时间】:2019-03-07 12:00:41
【问题描述】:

系统信息(版本)

  • OpenCV => python-opencv/bionic-updates,bionic-security,现在 3.2.0+dfsg-4ubuntu0.1 amd64 [已安装]
  • 操作系统/平台 => Ubuntu 18.04
  • 编辑: GTK 后端,我使用的是 Xubuntu。
  • 编辑:我没有构建opencv,我只是通过APT安装了python-opencv包。

详细说明

当图像高于显示分辨率时,WINDOW_NORMAL 不起作用。

我有两张图片:大的是 2560x2048,小的是 750x600。我的显示器设置为 1920x1080 分辨率。

当我使用下面的代码加载小窗口时,一切都按预期工作:我可以调整窗口大小和最大化窗口,并且图像“缩放”到窗口大小。

现在我加载大的(这是完全相同的图像,只是更大)。调整大小不起作用(它只是移动窗口)。最大化将窗口和图像设置为原始分辨率,这比我的显示分辨率大得多,并且无法在我的屏幕上看到整个图像。

我注意到的一件事是,在 2.4 版中,我可以将窗口大小调整为低于图像分辨率的大小。这在 3.2 版中不再起作用,可能是问题的关键。

注意:This 似乎是一个类似的问题,但不是。我无法调整图像大小,因为我对用户单击图像时的坐标感兴趣。

重现步骤

import cv2

path="/tmp/img.jpg" # or small_img.jpg

img = cv2.imread(path, 1)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

【问题讨论】:

  • 也许在您创建的bug report 中进行编辑...我已经建议您去那里发布它:) |尝试更新版本的任何更改?此构建使用什么 HighGUI 后端(gtk 或 qt 之一......可能会转储构建信息)
  • 谢谢丹!我编辑了帖子,回答了你的问题。我可以提供更多信息吗?
  • 你可以试试 cv2.WINDOW_FREERATIO。
  • 谢谢!为了以防万一,我们都尝试了所有方法,但没有成功。

标签: opencv opencv3.0


【解决方案1】:

如果仅用于调试目的,另一种可能性是调整图像大小以显示输出。

尝试 imutils.resize

【讨论】:

  • 这适用于需要在多个桌面上运行的桌面应用程序。我可以向系统询问屏幕分辨率,但想避免它。
猜你喜欢
  • 2020-01-16
  • 1970-01-01
  • 2021-09-20
  • 2011-02-13
  • 2019-06-17
  • 2016-04-07
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
相关资源
最近更新 更多