在 Docker 中使用 OpenCV (Python) 访问网络摄像头?

2024-02-14

我正在尝试将 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(使用前将#替换为@)

在 Docker 中使用 OpenCV (Python) 访问网络摄像头? 的相关文章

随机推荐