OpenCV VideoCapture::set()返回false,但成功

OpenCV VideoCapture::set() returns false but succeeds

本文关键字:false 返回 成功 VideoCapture set OpenCV      更新时间:2023-10-16

我在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??或我的网络摄像头)。如果是这样的话,我总是可以通过在set()之后执行get()来检查我的尝试。但如果出了什么问题,我想知道

参见文档:doc for VideoCapture::set(),OpenCV 2.4.6

谢谢!

我在Logitech c270网络摄像头上尝试了同样的操作,它运行正常,也返回true。我猜问题出在网络摄像头驱动程序上。

如果你还没有安装官方的罗技驱动程序,请尝试安装(我在网络摄像头上注意到,安装官方驱动程序也可以使OpenCV中的捕获速度快10倍)。