我是第一次使用 docker。我正在使用这张图片 opencvcourses/opencv-docker .
我尝试使用 openCV 运行脚本,但首先我将解释如何使用 print 和 numpy 运行简单代码
我的 ubuntu 本地目录中有我的脚本 (ej.py):/home/noemi/Escritorio/contenedores/cont1/ej.py
import numpy as np
print('Esto es una prueba ok')
print(np.pi)
我用下一个命令运行 dockerdocker 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/
我有一个名为 的脚本ej.py 在我的 ubuntu 位置 /home/noemi/Escritorio/contenedores/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 运行我的代码opencvcourses/opencv-docker 按照接下来的步骤,它对我有用:$ 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。这里像这样写python3 ej.py:root@ee4316d99815:/home# python3 ej.py
它有效!我的代码显示图像如果您想再次执行容器,请尝试以下操作:
$ docker ps -a
$ docker start (ID container like this ee4316d99815)
$ docker exec -it ee4316d99815/bin/bash
也许如果你想关闭 xhost,你应该使用 $ xhost -local:docker
关于python - 如何在 Docker、Ubuntu 中运行我的脚本 python openCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67099130/