繁体   English   中英

如何在opencv2 python中调整window的大小

[英]How to resize window in opencv2 python

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

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

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

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

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

简单地写

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

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

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

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

namedWindow("Image", WINDOW_NORMAL);

检查 此处记录的namedWindow函数

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

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)

它必须与电脑摄像头的分辨率一起运行此代码以确认

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 像素。 您可能必须减小图像的大小以适合屏幕

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM