我正在尝试将 Docker 用于我们的一个项目,该项目使用 OpenCV 来处理网络摄像头源(Python)。但我似乎无法访问 docker 中的网络摄像头,这是我用来测试网络摄像头访问的代码:
python -c "import cv2;print(cv2.VideoCapture(0).isOpened())"
这是我到目前为止所尝试的,
docker run --device=/dev/video0 -it rec bash
docker run --privileged --device=/dev/video0 -it rec bash
sudo docker run --privileged --device=/dev/video0:/dev/video0 -it rec bash
所有这些都返回False
, 我究竟做错了什么?
您提供的链接中的Dockerfile没有指定opencv是如何安装的,您能提供您使用的Dockerfile吗?或者你是如何安装opencv的?
如果您通过 pip 安装 opencv,VideoCapture(0) 将无法工作。
你正在使用--device=/dev/video0:/dev/video0
正确。
编辑:该线程已经存在五年多了。也许事情已经改变了,但我可以确认通过 pip 安装 opencv 工作正常。我偶然发现了这个线程,因为我面临着类似的问题,即我的应用程序在 Docker 容器内运行时无法访问相机。如果我的问题出在我用来在 docker 内运行 python 应用程序的用户帐户。我的 Dockerfile 中有以下几行:
RUN adduser -u 5678 --disabled-password --gecos "" appuser && \
chown -R appuser /app
USER appuser
Adding appuser
to video
如下所示的组修复了该问题:
RUN adduser -u 5678 --disabled-password --gecos "" appuser && \
adduser appuser video && \
chown -R appuser /app
USER appuser
顺便说一下,没有必要--privileged
在这种情况下标记。请记住,我的设置运行在运行基于 Ubuntu/Debian 的 Linux 操作系统的设备上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)