16

我正在使用带有网络摄像头的 opencv 2。我可以获取视频流并对其进行处理,但我似乎无法找到调整显示窗口大小的方法。我有一些水平堆叠的视频图像,但图像尺寸非常小,很难看到东西。

我的代码非常简单,大致如下:

cv2.namedWindow("main")

....

result = np.hstack((res2, foreground))
result = np.hstack((ff, result))

cv2.imshow("main", result)
cv2.waitKey(20)

opencv 文档指出:

namedWindow
flags – Flags of the window. Currently the only supported flag is CV_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.

但是 qt 后端显然有额外的标志。我没有qt后端。有没有办法让我增加图像的大小以便我可以看到它们?

4

5 回答 5

18

是的,很遗憾,如果没有 Qt 后端,您将无法手动调整nameWindow窗口大小。您的选择:

  • 在显示图像之前使用cv2.resize函数将图像调整为所需大小
  • 安装带有 Qt 后端支持的 OpenCV 并使用cv2.namedWindow("main", CV_WINDOW_NORMAL)
于 2013-05-29T14:08:18.447 回答
16

简单地写

cv2.namedWindow("main", cv2.WINDOW_NORMAL)

然后手动将其调整为您想要的大小

cv2.resizeWindow('image', 900, 900) 
于 2016-06-28T16:08:53.033 回答
4

您可以WINDOW_NORMAL在调用函数时使用该标志,namedWindow如下所示。这将允许您调整窗口大小。

namedWindow("Image", WINDOW_NORMAL);

检查此处namedWindow记录的功能

于 2014-07-21T02:07:38.457 回答
1

对我有用的是调整图像而不是窗口的大小(我从来没有设法让窗口调整大小起作用):

import cv2

img = cv2.imread('your_image.jpg')
res = cv2.resize(img, dsize=(500,500), interpolation=cv2.INTER_CUBIC)
cv2.namedWindow("Resized", cv2.WINDOW_NORMAL)
cv2.imshow("Resized", res)
于 2021-08-27T21:18:14.487 回答
-2

根据文档,您需要使用 autosize true 创建窗口。

cv2.namedWindow("main", cv2.WINDOW_AUTOSIZE)

然后,您对 imshow 的调用将自动调整窗口大小以适合您的图像。

于 2013-05-29T14:05:33.657 回答