如何在OpenCV2 Python中调整窗口大小

17
我正在使用带有网络摄像头的OpenCV 2。我可以获取视频流并对其进行处理,但似乎找不到调整显示窗口大小的方法。我将一些视频图像水平堆叠在一起,但图像尺寸非常小,很难看清楚物体。
我的代码非常简单,类似于这样:
cv2.namedWindow("main")

....

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

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

opencv documentation文件中写道:

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后端。有没有办法让我增加图像的大小,以便我可以看到它们?

6个回答

19

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

  • 使用cv2.resize函数在显示图像之前将图像调整为所需大小。
  • 安装支持Qt后端的OpenCV,并使用cv2.namedWindow("main", CV_WINDOW_NORMAL)

你是如何使用resize的? - user391339
cv2.resize(image, (0, 0), fx=0.5, fy=0.5) 会将图像沿着两个轴缩小一半,而 cv2.resize(image, (100, 50)) 则会将图像的宽度调整为100个像素,高度调整为50个像素。 - uutsav
3
如何将图像添加到窗口? - Anoop Toffy
我们如何检查是否有Qt后端? - Nathan majicvr.com

17

简单地写就好了

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

然后手动调整大小到您想要的尺寸

cv2.resizeWindow('image', 900, 900) 

5
在下一行中:cv2.resizeWindow('image', 900, 900) - San Askaruly

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

请在此处查阅namedWindow函数的相关文档。


在 Windows 11 上对我不起作用。 - bobt

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)

0

这与PC摄像头的分辨率有关,请运行此代码以确认。

cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
print(width, height)

很可能是640 x 480像素。你可能需要缩小图片的大小以适应屏幕。


-2
根据文档,您需要使用autosize true创建窗口。
cv2.namedWindow("main", cv2.WINDOW_AUTOSIZE)

接下来您调用imshow将自动调整窗口大小以适应图像。


2
选项WINDOW_AUTOSIZE是默认设置,将窗口大小设置为图像的实际固定大小。 - Salvador Medina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接