我正在尝试将OpenCV与python结合使用,以从USB摄像机捕获1080p
帧。
我确定相机可以在1080p
上工作,因为我使用QTv4l2 Test Utils
对其进行了测试,并且可以使用该工具捕获所需分辨率的帧。
但是,运行此代码:
import cv2
cam = cv2.VideoCapture(0) #0 because I'm reading frames from /dev/video0
cam.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
retval, frame = cam.read()
if retval != True:
raise ValueError("Can't read frame")
cv2.imwrite('img2.png', frame)
cv2.imshow("img1", frame)
cv2.waitKey()
创建分辨率为640x480
的png图像。
此外,执行cv2.VideoCapture(3)
后,如果我打开QTv4l2 Test Utils
,将摄像机分辨率设置为1080p的可能性就消失了。找回它的唯一方法是拔下电源插头,然后重新插入相机。
关于发生这种情况的任何线索以及有关如何解决问题的建议?