【问题标题】:VIDEOIO ERROR: V4L: can't find camera device视频错误:V4L:找不到相机设备
【发布时间】:2018-10-26 11:38:29
【问题描述】:

我正在使用 ubuntu16.04 并尝试运行 opencv 脚本。 当我使用时:

video_capture = cv2.VideoCapture(-1)

它给了我错误 VIDEOIO ERROR: V4L: can't find camera device 没有视频窗口打开 但是当我运行时

video_capture = cv2.VideoCapture('test.jpg')

它打开窗口显示图片并关闭窗口。 请告诉我为什么它不直接从相机流式传输视频。

【问题讨论】:

  • 你试过 cv2.VideoCapture(0) 吗?
  • @api55 0 - 用于默认 PC 网络摄像头。它不起作用。
  • @TARS 是的,我知道它的用途,这就是我问如果 OP 尝试过的原因,因为它不在问题范围内。我的另一个建议是尝试使用另一个后端...

标签: opencv ubuntu-16.04 python-3.5


【解决方案1】:

api55在评论中给出的建议

video_capture = cv2.VideoCapture(0)

是我首先要尝试的。

一般情况下,您可以使用ls /dev/video*v4l2-ctl --list-devices 列出可用的摄像头。这里的示例输出:

NZXT-U:rt-trx> v4l2-ctl --list-devices
Microsoft® LifeCam Cinema(TM): (usb-0000:00:14.0-1):
    /dev/video1

Microsoft® LifeCam Cinema(TM): (usb-0000:00:1a.0-1.3):
    /dev/video0

/dev/video0对应设备id 0等

PS:v4l2-ctl 对解决相机问题非常有用,并且比--list-devices 可以做的更多。我在 16.04 的机器上通过 packagev4l-utils 安装了它。

【讨论】:

  • 非常感谢 Ulrich 的回答。我做了 sudo apt-get install cheese,它开始工作了。
  • @NeerajSharma,我快速浏览了 OpenCV 源代码,VideoCapture 确实支持负设备编号(至少对于 cap_v4l.cpp),即使这不在文档中!你可以回答你自己的问题。如果您不感兴趣,我将编辑我的答案。
  • 是的,我尝试使用 -1 并且它有效。感谢您对乌尔里希的支持。
【解决方案2】:

晚了,但为了让我的工作我把终端放在:

-ltrh /dev/video*

获取插入我的计算机的视频设备的列表。然后对于我所做的每一个:

sudo chmod 777 /dev/videox

其中 x 是列出的视频文件之一,所有内容都可以访问它们。可能不是最安全的解决方案,但它让我的代码正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2019-01-05
    相关资源
    最近更新 更多