这是对我上一个问题的跟进,
有人可以建议一个允许我从相机中抓取帧而不用太多大惊小怪的库(比如视频视频输入lib for windows)并将它们传递给我的应用程序中的opencv吗?
答案 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 。