我是第一次使用docker。我正在使用此图像opencvcourses/opencv-docker。我试着用openCV运行一个scrip,但首先我要解释如何用print和numpy 运行一个简单的代码
我在我的ubuntu本地目录上有我的脚本(ej.py(:/home/noemi/Escoritorio/contentores/cont1/ej.py
import numpy as np
print('Esto es una prueba ok')
print(np.pi)
我用下一个命令运行docker
docker run -it -v /home/noemi/Escritorio/contenedores/cont1:/home opencvcourses/opencv-docker
而且,我的剧本很管用!我得到这个
Esto es una prueba ok
3.141592653589793
但是当我添加到我的脚本(ej.py(openCV代码时
import cv2
import numpy as np
img1 = np.zeros((6,8,1),np.uint8)
cv2.imshow('imagen-zeros',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
并尝试使用相同的命令
docker run -it -v /home/noemi/Escritorio/contenedores/cont1:/home opencvcourses/opencv-docker
出现此错误
Traceback (most recent call last):
File "ej.py", line 6, in <module>
cv2.imshow('imagen-zeros',img1)
cv2.error: OpenCV(4.5.1) /home/opencv/modules/highgui/src/window_gtk.cpp:624: error: (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'
拜托,我不知道发生了什么
我在阅读这篇文章时找到了解决方案https://www.programmersought.com/article/15656181875/
我在我的ubuntu位置上有一个名为ej.py的脚本/home/noemi/Escoritorio/contentores/cont1
import cv2
import numpy as np
print('Esto es una prueba ok')
print(np.pi)
img = cv2.imread('gato.jpg')
cv2.imshow('imagen-zeros',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
要使用docker image运行我的代码,请执行以下步骤:
$ xhost +local:docker
$ docker run -it --device /dev/video0:/dev/video0 -v $(pwd):/home -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -p 5000:5000 -p 8888:8888 opencvcourses/opencv-docker
上一个命令创建一个容器并打开镜像bash。这里写python3ej.py如下:
root@ee4316d99815:/home# python3 ej.py
它起作用了!我的代码显示图像
如果你想再次执行容器,请尝试以下操作:
- 使用以下内容识别容器的ID:$docker ps-a
- 使用以下内容启动容器:$docker启动(像这样的ID容器ee4316d99815(
- 使用以下内容执行容器:$docker exec-it ee4316d99815/bin/bash
- 用python3 ej.py再试一次
如果你想关闭xhost,你应该使用$xhost-local:docker
docker run命令
docker run -it -v /home/noemi/Escritorio/contenedores/cont1:/home opencvcourses/opencv-docker
解释
- 将DISPLAY环境变量值设置为与HOST的值相同
--env DISPLAY=$DISPLAY
- 帮助X11转发,以便我们可以使用
cv::imshow
等函数
-v /tmp/.X11-unix:/tmp/.X11-unix
让我知道这是否能相应地更新这个答案。
来源
- 在Ubuntu、MacOS或Windows上安装OpenCV Docker镜像
- 没有与主机名关联的地址
- 错误:(-2:未指定的错误(无法初始化函数"cvInitSystem"中的GTK后端