python - 如何在 Docker、Ubuntu 中运行我的脚本 python openCV

标签 python docker opencv ubuntu terminal

我是第一次使用 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)
我用下一个命令运行 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/
我有一个名为 的脚本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
它有效!我的代码显示图像
如果您想再次执行容器,请尝试以下操作:
  • 识别容器的 ID:
    $ docker ps -a
  • 使用以下命令启动容器:
    $ docker start (ID container like this ee4316d99815)
  • 使用以下命令执行容器:
    $ docker exec -it ee4316d99815/bin/bash
  • 然后用 python3 ej.py
  • 再试一次

    也许如果你想关闭 xhost,你应该使用 $ xhost -local:docker

    关于python - 如何在 Docker、Ubuntu 中运行我的脚本 python openCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67099130/

    相关文章:

    python - Numpy loadtxt 跳过第一列

    docker - 如何从 bash 在正在运行的 spotif/kafka 容器实例中创建主题

    c++ - 如何在 OpenCV 3.0 中使用 GDAL 打开 ECW 文件

    python - 在 Python 和 numpy 中,如何用前一个元素替换数组中的缺失值? (蒙面阵?)

    python - setup.py:限制python解释器的允许版本

    docker - 恢复预配置的Docker镜像的方法

    debian - 在 Debian 主机上获取图像时 Docker 超时

    c++ - 行的opencv轮廓

    C++ 词袋 - OpenCV : Assertion Failed

    python - Python,需要播放从文本语音API提取的音频,但是我无法将其转换为类似字节的对象