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

2024-09-27 00:19:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用C++和Python在Kuuntuu 12.04上使用OpenCV 2.4.6。使用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;

给出:

^{pr2}$

以及

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

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

谢谢!在


Tags: getwidthframeopencvcvcapprintheight
1条回答
网友
1楼 · 发布于 2024-09-27 00:19:15

我在我的罗技c270网络摄像头上尝试了同样的方法,它工作正常,也返回了真值。我猜问题出在网络摄像头驱动程序上。在

如果你还没有安装官方的Logitech驱动程序(我注意到在我的网络摄像头中安装官方驱动程序也可以使OpenCV中的捕获速度提高10倍)。在

相关问题 更多 >

    热门问题