OpenCV VideoCapture::set()返回false,但成功
OpenCV VideoCapture::set() returns false but succeeds
我在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倍)。
相关文章:
- QueryWorkingSet总是返回false
- 当返回类型声明为 ListNode 时,我们是否可以返回 false<T>*
- 等于在 c++ 中返回 false
- strcmp 对于相等的字符序列返回 false
- C++ - 负数和正数之间的比较返回 false
- protobuf 的 ParseFromString 函数返回 false
- 递归函数始终返回 false
- 为什么 GetExitCodeThread() 在这里返回 FALSE?
- C++如果使用 lambda 表达式的语句返回 true,但输出来自 false,为什么
- MFC 的 OnInit() 函数中的返回 true 和返回 false 有什么区别
- if 语句在条件为真时返回 false
- 为什么 std::isnan() 对于具有 NAN 值的双变量返回 false
- is_lock_free() 在升级到 MacPorts gcc 7.3 后返回 false
- 在 winapi 回调函数上返回 FALSE 时出现意外行为(循环被跳过?
- 如果数组中有重复的数字,如何返回'false'?
- std::is_array 当它应该返回 false 时返回 true
- 为什么pyarg_parsetuple总是返回false
- 我想返回 True/False 关于值是否在一组值中
- 删除为应该在哈希表中的记录返回 false 的函数
- 具有自定义返回类型和"false"返回条件的函数?