我正在使用OpenCV编写一个Python程序,但是我无法从v4l2相机捕获图像。
我尝试了PS2 EyeToy和Droidcam (安卓虚拟摄像头),它们都使用v4l2,它们都不起作用: cv.CaptureFromCAM(0)只返回None。
我可以在其他程序中使用这两个网络摄像头(尝试VLC和Kamerka)。
我猜OpenCV只支持v4l,不支持v4l2。
我该如何解决这个问题?是否存在v4l2->v4l转换器?
编辑:我读到cv.CaptureFromFile使用ffmpeg来解码视频文件。可以手动指定格式,这样我就可以使用ffmpeg的video4linux2多路分解器了吗?
发布于 2017-06-18 13:14:32
对于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个选项似乎是最终使我的选项工作的原因
发布于 2013-03-16 04:01:26
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,因为我没有安装必要的开发文件。
发布于 2020-03-07 02:25:01
我不得不更新摄像头的权限,然后OpenCV开始为我工作。
sudo chmod 0777 /dev/video0https://stackoverflow.com/questions/15435988
复制相似问题