【问题标题】:OpenCV VideoCapture::set() returns false but succeedsOpenCV VideoCapture::set() 返回 false 但成功
【发布时间】:2013-11-22 02:35:59
【问题描述】:

我在 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

谢谢!

【问题讨论】:

  • 你使用的是主干版还是稳定版..?
  • 我用的是stable 2.4.6...

标签: c++ python linux opencv image-capture


【解决方案1】:

我在我的 Logitech c270 网络摄像头上尝试了同样的方法,它工作正常并且返回 true。我猜问题是网络摄像头驱动程序的故障。

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

【讨论】:

  • 感谢您的建议,我会尽快处理的。
  • 嗯,实际上,似乎使用 Linux 内核 3+ 我有很好的驱动程序。我可能会购买一个新的网络摄像头并保留我的旧 QCPro3000 进行测试。
猜你喜欢
  • 2018-10-11
  • 2017-08-27
  • 2019-07-10
  • 2016-06-17
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
相关资源
最近更新 更多