OpenCV是否支持v4l2?

时间:2013-03-15 15:19:15

标签: opencv v4l2

我正在使用OpenCV编写Python程序,但我无法从v4l2相机中捕获图像。

我尝试使用PS2 EyeToy和Droidcam(Android虚拟网络摄像头),它们都使用v4l2,但都不起作用:cv.CaptureFromCAM(0)只返回None。

我可以在其他程序中使用两个网络摄像头(尝试过VLC和Kamerka)。

我想OpenCV仅支持v4l,而不支持v4l2。

我该如何解决这个问题?是否存在v4l2-> v4l转换器?

编辑:我读过cv.CaptureFromFile使用ffmpeg来解码视频文件。是否可以手动指定格式,所以我可以使用ffmpeg的video4linux2分路器?

3 个答案:

答案 0 :(得分:6)

对于OpenCV 3.2.0,包括以下cmake选项为我工作

来自https://github.com/opencv/opencv/issues/7974

-DWITH_V4L=ON 
-DWITH_LIBV4L=ON

我不确定这个是否有影响,但来自VideoCapture Does Not Work in Anaconda

-DWITH_FFMPEG=1

在我的cmake选项中包括所有3个似乎是最终使我的工作

答案 1 :(得分:3)

OpenCV支持V4L2 ,但默认情况下可能不支持。

下载OpenCV的源代码,确保您的系统上安装了v4l2标头和库

使用cmake配置OpenCV后,检查它的输出:

--   Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  YES (ver 2.2.0)
--     FFMPEG:                      YES
--       codec:                     YES (ver Unknown)
--       format:                    YES (ver Unknown)
--       util:                      YES (ver Unknown)
--       swscale:                   YES (ver Unknown)
--       gentoo-style:              YES
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     PvAPI:                       NO
--     GigEVisionSDK:               NO
--     QuickTime:                   NO
--     QTKit:                       YES
--     V4L/V4L2:                    NO/NO

如果您注意到上面的输出,OpenCV将不会在我的系统上支持V4L / V4L2而构建,因为我没有安装必要的开发文件。

答案 2 :(得分:0)

我必须更新摄像机的权限,然后OpenCV开始为我工作。

sudo chmod 0777 /dev/video0
相关问题