2013-03-15 57 views
1

我正在使用OpenCV编写Python程序,但我无法从v4l2摄像头捕获图像。OpenCV是否支持v4l2?

我试着用PS2 EyeToy和Droidcam(Android虚拟摄像头),它们都使用v4l2,但都没有工作:cv.CaptureFromCAM(0)只返回无。

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

我猜OpenCV只支持v4l,而不支持v4l2。

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

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

+1

请检查答案,对那些对你有帮助的人投票,如果其中一人导致你解决问题,你应该点击附近的复选框将其选为正式答案。通过做这些事情,你正在帮助未来的游客。 – karlphillip 2013-03-31 18:58:50

回答

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支持建立,因为我没有安装必要的开发文件。

+0

该输出来自OpenCV 2.4.4a。 – karlphillip 2013-03-15 20:01:43