我有一个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()
出现并显示实时网络摄像头视频的窗口很小。但是,如果我使用上述代码播放视频文件,则出现的窗口会很大。在上面的代码中,我没有提到任何调整窗口大小的内容。
为什么有这个区别??
如何使视频文件窗口的尺寸小一些??
区别在于图像的原始尺寸。也就是说,相机获取的图像比视频文件的图像小。
要缩小窗口大小,可以调整从视频获得的图像的大小。代码是:
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了解更多详情。
从文档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)