【问题标题】:OpenCV is there a way to resize the showed image to the screen automatically?OpenCV有没有办法自动将显示的图像调整到屏幕上?
【发布时间】:2022-01-26 06:27:43
【问题描述】:

我正在使用 opencv 显示图像。问题是图像很大,所以它比我的大显示器还大。 有没有办法显示此图像自动调整大小以适合我的屏幕?

请注意,这里对类似问题的许多答案分为两类:

  1. 他们建议在 namedWindow 函数中使用一个选项,但这并没有解决问题(我尝试并仔细阅读了文档,它从未声称它确实解决了这个问题)李>
  2. 使用调整大小手动调整图像大小。不是自动的。但是,我怎么知道要调整大小的值呢?

编辑:我被要求报告我声称 WINDOW_NORMAL 不能解决问题的说法。我面前有一个脚本,我首先要做的是

cv.imshow("window",image)
cv.waitKey()

然后使用相同的脚本

cv.namedWindow("window", cv.WINDOW_NORMAL)
#image = cv.resize(image, (960, 540))
#image = cv.resize(image, (1280, 800))
cv.imshow("window",image)
cv.waitKey()

结果是一样的。窗户一如既往的大。 现在让我们看看docs

参数:

name – Name of the window in the window caption that may be used as a window identifier.
flags –

Flags of the window. The supported flags are:
    WINDOW_NORMAL If this is set, the user can resize the window (no constraint).
    WINDOW_AUTOSIZE If this is set, the window size is automatically adjusted to fit the displayed image (see imshow() ), and you cannot change the window size manually.
    WINDOW_OPENGL If this is set, the window will be created with OpenGL support.

如您所见,它清楚地表明用户可以调整窗口大小(无限制),并且没有部分显示自动 所以它没有解决这个问题的问题

【问题讨论】:

  • 您只需在调用imshow 之前 使用namedWindow("foo", cv.WINDOW_NORMAL) 即可调整大小。解释你为什么声称没有解决它。显示发生了什么,以及为什么这不是你想要的。 -- 如果你想要一个全屏窗口(你没有准确地说那个),还有另一个标志。结合WINDOW_NORMAL,它会拉伸图像。

标签: opencv


【解决方案1】:

您可以尝试使用以下库来获取显示器的 X 和 Y 值:

import pyautogui #pip install pyautogui

x = pyautogui.size()[0] # getting the width of the screen
y = pyautogui.size()[1] # getting the length of the screen

print(x,y) 

【讨论】:

  • 你应该再读一遍这个问题。你回答了一些没有被问到的问题。
【解决方案2】:

类似于 Dimitar Veljanovski 发布的内容(谢谢!)我是这样做的。它不是自动的,它不会占据整个屏幕,但我还没有收到这个答案

h, w, c = image.shape
cv.namedWindow("window",cv.WINDOW_NORMAL)
image=cv.resize(image, (w//3,h//3))

cv.imshow("window",image)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2011-06-24
    • 2012-10-05
    • 1970-01-01
    相关资源
    最近更新 更多