成功运行了包含OpenCV的Docker容器
OpenCV无法初始化GTK后端。这可能是因为Docker容器没有正确地配置X11转发。
1.确保你的主机上已经安装了x11-apps。如果没有,你可以使用以下命令进行安装:
sudo apt-get install x11-apps
2. 在你的主机上运行xhost命令来允许所有用户访问X server:
xhost + (每次开机都要做)
如果你只是想要允许特定的Docker容器访问你的X server,你可以使用
xhost +local:docker命令。这个命令只会允许本地的Docker容器连接到你的X server。
3.启动容器
docker run -it --device /dev/video0 --privileged -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix matimoreyra/opencv
在Docker容器中访问主机的摄像头需要使用特殊的参数来运行Docker容器。你可以使用--device参数将主机的摄像头设备添加到Docker容器中
/*******************************************************************
docker run -it --device /dev/video0 matimoreyra/opencv
在这个命令中,/dev/video0是主机上摄像头设备的路径。这可能会根据你的系统有所不同。你可以通过运行ls /dev/video*命令来查看你的摄像头设备路径
如果你的应用程序仍然无法访问摄像头,你可能需要使用--privileged参数来运行Docker容器。这个参数会给Docker容器提供访问所有设备的权限。以下是一个示例命令:
docker run -it --privileged --device /dev/video0 matimoreyra/opencv
*****************************************************/
4. 打开摄像头
1.cheese (不知道为什么使用这个命令不行) (但是,摄像头其实已经可以使用了)
2. fswebcam /dev/video0
fswebcam --no-banner -r 640x480 image.jpg (这个可以,捕获一张照片)
重复实验 (--privileged可以不使用)
*******************************************************************
1. 配置X11转发之后启动容器
docker run -it --device /dev/video0 -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix matimoreyra/opencv
2.在容器内查看是否有摄像头设备
ls /dev/video*
3.使用fswebcam --no-banner -r 640x480 image.jpg 捕获一张照片
4.使用程序打开摄像头,并把视频存放到本地
问题:
1.启动容器之后,它还是说找不到opencv路径,和以前一样,自己建立文件,连接即可
2.进入容器先看能否联网,联网之后先更新
apt update
apt install vim
apt-get install fswebcam
容器 主机 相互复制文件
docker cp /home/xiao/Desktop/opencvsy/sp4.c ce8e28af91a8:/
docker cp ce8e28af91a8:/xiao.mp4 /home/xiao/Desktop
把容器封装成镜像之后,使用这个镜像运行容器时,还是需要在运行时把 要添加的设备加上去 这样才能使用
1