我在Kubuntu 12.04上使用OpenCV 2.4.6同时使用C ++和Python。使用Logitech Quick Cam Pro 3000网络摄像头,我成功设置了帧大小,但VideoCapture::set()
始终返回 false 。
// C++
VideoCapture lCap( 0 );
cout << lCap.get( CV_CAP_PROP_FRAME_WIDTH ) << endl;
cout << lCap.get( CV_CAP_PROP_FRAME_HEIGHT ) << endl;
cout << boolalpha << lCap.set( CV_CAP_PROP_FRAME_WIDTH, 320 ) << endl;
cout << boolalpha << lCap.set( CV_CAP_PROP_FRAME_HEIGHT, 240 ) << endl;
cout << lCap.get( CV_CAP_PROP_FRAME_WIDTH ) << endl;
cout << lCap.get( CV_CAP_PROP_FRAME_HEIGHT ) << endl;
给出:
640
480
false
false
320
240
和
# Python 2.7
Cap = cv2.VideoCapture( 0 )
print( Cap.get( CV_CAP_PROP_FRAME_WIDTH ) )
print( Cap.get( CV_CAP_PROP_FRAME_HEIGHT ) )
print( Cap.set( CV_CAP_PROP_FRAME_WIDTH, 320 ) )
print( Cap.set( CV_CAP_PROP_FRAME_HEIGHT, 240 ) )
print( Cap.get( CV_CAP_PROP_FRAME_WIDTH ) )
print( Cap.get( CV_CAP_PROP_FRAME_HEIGHT ) )
也给出了同样的东西。
所以我想知道这种行为是否正常(OpenCV或libs V4L,V4L2 ???或我的网络摄像头)。如果是这样,我可以在get()
后执行set()
检查我的尝试。但如果出现问题,我想知道。
请参阅文档:Doc for VideoCapture::set(), OpenCV 2.4.6
谢谢!
答案 0 :(得分:1)
我在我的Logitech c270网络摄像头上尝试了相同的操作,它运行正常,也返回了真实状态。我猜这个问题是网络摄像头驱动程序的错误。
尝试安装正式的Logitech驱动程序,如果你还没有这样做(我注意到我的网络摄像头,安装官方驱动程序也会使OpenCV中的捕获速度提高约10倍)。