从网络摄像头抓取图像以与OpenCV一起使用

时间:2011-02-17 18:54:17

标签: linux image-processing opencv

这是对我上一个问题的跟进,

OpenCV PS 3 Eye

有人可以建议一个允许我从相机中抓取帧而不用太多大惊小怪的库(比如视频视频输入lib for windows)并将它们传递给我的应用程序中的opencv吗?

1 个答案:

答案 0 :(得分:7)

我使用完全不同的网络摄像头遇到了并行问题:在cheese / etc中运行良好,v4l-info显示正确设置,但openCV将失败:

HIGHGUI ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV Unable to stop the stream.: Bad file descriptor

经过多次抨击后,我发现at least one guy在各种应用程序中与网络摄像头有类似的问题。

我盲目地用export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so和« poof 打了一拳。

openCV v4l2接口不像v4l实现那样健壮,导出快速workaround(openCV似乎还原为v4l)。

快速浏览opencv/modules/highgui/src/cap_v4l.cpp,似乎openCV想要使用v4l2。

我正在运行Ubuntu Lucid 2.6.32-28-generic x86_64,libv4l-0 v0.6.4-1ubuntu1,几天前从repo的HEAD中拉出openCV。

在解释这个问题的过程中,我已经解决了我的问题。事实证明,openCV默认情况下将v4l2设备上的分辨率强制为640x480 - 而我的设备的最大分辨率为320x240,这导致在opencv::highgui::cap_v41::try_palette_v4l2中测试格式类型时出现故障。我改变了 DEFAULT_V4L_WIDTH DEFAULT_V4L_HEIGHT