J'ai écrit un tel Qiita (Ubuntu, Python, environnement OpenCV créé sur Docker) avant, mais cv2.imshow ()
Cela n'a pas fonctionné et je faisais divers essais et erreurs.
Dans cet article, j'écrirai comment faire fonctionner correctement cv2.imshow ()
même dans l'environnement Docker.
Le système d'exploitation hôte est MacOS Catalina.
https://www.xquartz.org/
Après l'installation, cochez Autoriser les connexions des clients réseau dans l'onglet Sécurité des Préférences XQuartz.
xhost +
docker run -it \
-v $(pwd):/code \
-v ~/.Xauthority:/root/.Xauthority \ #Requis pour interagir avec Docker et GUI
-e DISPLAY=$(hostname):0 \ #Requis pour interagir avec Docker et GUI
-p 8888:8888 \ #Pour Jupyter
--name opencv \
ubuntu /bin/bash
Procédez comme suit dans le conteneur
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
Lancez XQuartz sur le PC hôte
Démarrez Jupyter (à l'intérieur du conteneur)
jupyter lab --ip=0.0.0.0 --allow-root --LabApp.token=''
Accédez à http: // localhost: 8888 / avec le navigateur du PC hôte
Procédez comme suit dans Jupyter
import cv2
img = cv2.imread('test.jpeg') #Mettez une image appropriée
img.shape # => (Longueur verticale de l'image,Longueur horizontale, 3 )Est retourné
cv2.imshow('img', img) #Si vous souhaitez afficher une image, exécutez-la avec cet ensemble de 3 lignes
cv2.waitKey(0)
cv2.destroyAllWindows
Si ce qui précède fonctionne sans erreur !! Merci pour votre travail acharné !!!
Recommended Posts