我想用我的相机拍摄1920x1080视频,但我遇到了两个问题
当在cv2中设置1920x1080时,图像变成蓝色,底部有一个故障条
cap = cv2.VideoCapture('/dev/video0')
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
根据v4l2-ctl,事情是这样的。蓝色图像似乎不是像素格式变化的结果(例如。RGB至BGR)
最后,这里是一个以640x480拍摄的具有正确颜色的图像示例。代码中唯一的区别是cv2中未设置宽度/高度
实际上,您使用的相机有2种模式:
一个用于主流,一个用于子流。我也遇到过几次这个问题,下面是它不起作用的可能原因。
注意:我假设您尝试了不同的方式以全分辨率(1920x1080)运行,例如cv2。视频捕获(0)
,cv2。视频捕获(-1)
,cv2。视频捕获(1)
。。。
读/写属性涉及许多层。沿着这条链可能会发生一些意想不到的结果。有效的行为取决于设备硬件、驱动程序和API后端。
在这种情况下,如果您真的需要达到该分辨率并与opencv兼容,您应该使用相机的SDK(如果有)。