OpenCV Python中的视频文件与实时网络摄像头供稿窗口大小

问题描述 投票:0回答:2

我有一个python代码,它将打开实时网络摄像头,我可以提供视频供稿。下面是代码:

import cv2

vcap = cv2.VideoCapture(1)
while(1):
    ret, frame = vcap.read()

    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

vcap.release()
cv2.destroyAllWindows()

出现并显示实时网络摄像头视频的窗口很小。但是,如果我使用上述代码播放视频文件,则出现的窗口会很大。在上面的代码中,我没有提到任何调整窗口大小的内容。

为什么有这个区别??

如何使视频文件窗口的尺寸小一些??

python opencv
2个回答
0
投票

区别在于图像的原始尺寸。也就是说,相机获取的图像比视频文件的图像小。

要缩小窗口大小,可以调整从视频获得的图像的大小。代码是:

ret, frame = vcap.read()
frame = cv2.resize(frame, None, None, fx=0.5, fy=0.5)

有关更多详细信息,请参阅resize

===其他文档===imshow函数在指定的窗口中显示图像。如果窗口是使用cv :: WINDOW_AUTOSIZE标志创建的,则显示的图像具有其原始大小,但是仍然受屏幕分辨率的限制。否则,将缩放图像以适合窗口。如果没有像您一样在此功能之前创建窗口,则假定使用cv :: WINDOW_AUTOSIZE创建一个窗口。您可以参考imshow了解更多详情。


0
投票

从文档here中可以看到,imshow()的第一个参数是窗口名称。如果在调用imshow()之前未显式创建具有该名称的窗口,则OpenCV将创建一个设置有CV_WINDOW_AUTOSIZE标志的窗口,这意味着它将以其原始大小显示frame。因此,如果您使用不同的框架,则窗口大小也将不同。要使窗口变小,可以创建一个带有WINDOW_NORMAL标志的窗口,该窗口允许您设置窗口大小。因此,您可以执行以下操作:

cv2.namedWindow("Window", cv2.WINDOW_NORMAL)
# set your desired size
cv2.resizeWindow('Window', width, height)
cv2.imshow('Window', frame)
© www.soinside.com 2019 - 2024. All rights reserved.