我正在尝试访问我的beaglebone上的Logitech c310网络摄像头。对于任何设备ID,它总是返回false,我不知道为什么。
我使用以下代码。
>>> import cv2, numpy as np
>>> cam = cv2.VideoCapture(0)
>>> cam.open(0)
False
摄像机在dev/和root@arm:~#lsusb
中显示为video0,如下所示
root@arm:~# lsusb
Bus 001 Device 002: ID 046d:081b Logitech, Inc. Webcam C310
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
我也可以用v4l2-ctl
访问相机。
请注意,我对OpenCV很陌生,所以这听起来可能很傻,我提前为此道歉。
如果cv2是从pypi wheel安装的,则不支持与视频相关的功能(不使用FFmpeg编译):
https://pypi.python.org/pypi/opencv-python
如果您遇到这种错误,那么索引可能有问题。
取代cv2。VideoCapture(0)添加:
这将为你提供第一台工作摄像机。 如果出了什么问题,就把堆栈跟踪贴在这里,我看看能不能帮你:)
我也遇到过类似的问题。可能与用户权限有关。尝试使用以下步骤诊断问题。
运行以下命令以确定相机访问权限
ls -la /dev/video*
您可能会得到如下类似的输出(如果您有多个摄像头,则可能会得到video1)。如您所见,只有
root
用户和video
组中的用户有权访问相机。crw-rw----. 1 root video 188, 0 Apr 3 21:16 /dev/video0
因此,修复方法很简单,使用以下命令将您的用户帐户添加到
video
组:sudo usermod -a -G video <you login name>
希望有帮助!
相关问题 更多 >
编程相关推荐