J'ai créé une image docker pour l'ouverture et la reconnaissance faciale pour simplifier le processus de configuration.
Mais le script reconnaissent.py a besoin de X Server pour afficher le résultat de l'image. Voici ce que j'ai fait jusqu'à présent:
Sudo docker run -t -d --name opencv opencv:latest
Sudo docker exec -it opencv bash /extract-embeddings.sh
Sudo docker exec -it opencv bash /train-model.sh
Tout va bien jusqu'à présent. La dernière étape est la comparaison réelle qui affiche le résultat dans une image.
Sudo docker exec -it opencv bash /face-recognition.sh
Il donne la sortie:
[INFO] loading face detector...
[INFO] loading face recognizer...
No protocol specified
: cannot connect to X server :0
J'ai essayé d'exécuter le conteneur avec la commande suivante:
Sudo docker run -t -d --name opencv -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix opencv:latest
Mais ça n'aide pas.
Essayez de faire ça,
xhost +
Sudo docker run --rm -ti --net=Host --ipc=Host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --env="QT_X11_NO_MITSHM=1" <image_name> <arguments>
D'autres pourraient rencontrer des problèmes concernant le fait que l'image ne soit pas rendue à l'écran ou sur un écran vierge sans image, pour eux, ajoutez --env="_X11_NO_MITSHM=1"
au script ci-dessus lors de l'exécution de l'image docker. Cela résoudra le problème.
Pour plus d'informations, je vous recommande de consulter les références ci-dessous.