我正在使用ubuntu16.04并尝试运行opencv脚本。 当我使用时:
video_capture = cv2.VideoCapture(-1)
它给我错误视频错误:V4L:找不到摄像头设备 没有视频窗口打开 但是当我运行
video_capture = cv2.VideoCapture('test.jpg')
打开窗口显示图片并关闭窗口。 请告诉我为什么它不直接从摄像机流式传输视频。
答案 0 :(得分:0)
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
的功能还多。我通过软件包v4l-utils
将其安装在16.04计算机上。
答案 1 :(得分:0)
后来,但是为了让我的工作正常,我在终端上放了
-ltrh /dev/video*
以获取插入我的计算机的视频设备的列表。然后我每做一次:
sudo chmod 777 /dev/videox
其中x是列出的视频文件之一,因此可以访问所有内容。可能不是最安全的解决方案,但是它可以使我的代码正常工作。