Opencv视频捕捉无法捕捉图像

时间:2014-11-13 03:23:41

标签: opencv cmake video-capture

我使用cmake使用opencv构建我的项目。顶层目录下有两个子项目A和B. A没有opencv功能,而B使用VideoCapture从网络摄像头获取图像。一开始没有问题。

然而,在我将代码从B添加到A之后,B仍然可以从网络摄像头捕获图像,但A不能做同样的事情,错误如下:

HIGHGUI ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
VIDIOC_STREAMON: Inappropriate ioctl for device

很奇怪,我发现VideoCapture无法在A中获取图像,代码在下面

VideoCapture cam;
cam.open(0);
if(!cam.isOpened()){
  cout << "Failed to open webcam" << endl;
  return false;
}
Mat Image;
cam >> Image;
if(Image.empty())
        cout<<"Image empty"<<endl;

&#34;图片为空&#34;总是在控制台,这意味着它根本无法捕捉图像! 我遵循了一些建议,例如install&#34; v4l2ucp&#34;,但&#34; / usr / lib /&#34;下没有文件夹。命名&#34; libv4l&#34;,所以LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so不起作用。

如果有人能帮我解决项目A中的问题,我将非常感激。

1 个答案:

答案 0 :(得分:0)

该文件可能不一定存在。试试find / -name "*v4l1compat.so*" 2>/dev/nullfind / -name "*libv4l*" 2>/dev/null。它应该成功,因为你的项目B捕获框架就好了。然后尝试将找到的文件导出到LD_PRELOAD。 如果它没有成功 - 请查看您的libv4l安装。

并确保您尝试使用尚未使用的正确相机open()