Ich habe zuvor eine solche Qiita geschrieben (Ubuntu, Python, OpenCV-Umgebung wurde auf Docker erstellt), aber cv2.imshow ()
Hat nicht funktioniert und ich habe verschiedene Versuche und Irrtümer gemacht.
In diesem Artikel werde ich schreiben, wie man "cv2.imshow ()" auch in der Docker-Umgebung richtig funktioniert.
Das Host-Betriebssystem ist MacOS Catalina.
https://www.xquartz.org/
Aktivieren Sie nach der Installation auf der Registerkarte Sicherheit in den XQuartz-Einstellungen die Option Verbindungen von Netzwerkclients zulassen.
xhost +
docker run -it \
-v $(pwd):/code \
-v ~/.Xauthority:/root/.Xauthority \ #Erforderlich für die Interaktion mit Docker und GUI
-e DISPLAY=$(hostname):0 \ #Erforderlich für die Interaktion mit Docker und GUI
-p 8888:8888 \ #Für Jupyter
--name opencv \
ubuntu /bin/bash
Gehen Sie im Container wie folgt vor
apt-get -y update && apt-get -y upgrade && \
apt-get -y install python3-pip vim libgl1-mesa-dev libgtk2.0-dev && \
pip3 install numpy opencv-python jupyterlab pandas matplotlib scikit-learn seaborn scipy
Starten Sie XQuartz auf dem Host-PC
Starten Sie Jupyter (im Container)
jupyter lab --ip=0.0.0.0 --allow-root --LabApp.token=''
Greifen Sie mit dem Browser des Host-PCs auf http: // localhost: 8888 / zu
Gehen Sie in Jupyter wie folgt vor
import cv2
img = cv2.imread('test.jpeg') #Setzen Sie ein passendes Bild
img.shape # => (Vertikale Länge des Bildes,Horizontale Länge, 3 )Ist zurück gekommen
cv2.imshow('img', img) #Wenn Sie ein Bild anzeigen möchten, führen Sie es mit diesem 3-Zeilen-Set aus
cv2.waitKey(0)
cv2.destroyAllWindows
Wenn das oben genannte fehlerfrei funktioniert !! Vielen Dank für Ihre harte Arbeit !!!
Recommended Posts