[PYTHON] Il est difficile d'installer un écran vert, je n'ai donc découpé que le visage et l'ai superposé sur l'image de fond

J'ai détecté mon visage à partir de la webcam et essayé de superposer uniquement le visage sur l'image d'arrière-plan. Si vous transmettez la vidéo en tant que caméra Web à l'application de conférence Web, vous pouvez facilement apparaître dans la conférence Web. treeman_example.png Vous pouvez aussi être un sage des arbres qui voulait être (?) Quand vous étiez petit.

Note) Il n'y a pas de fonction supplémentaire pour le bandeau sur les yeux. Le bandeau a été ajouté à la pelle plus tard à la main pour cet article.

Tâche

Depuis début mars, je suis à la maison pour des conférences Web. La pièce était si sale que j'ai réussi à le faire sans vidéo, juste de l'audio et du partage d'écran. Cependant, j'estime que les économies de confiance que j'ai réalisées jusqu'à présent ont été retirées simplement en utilisant la conférence Web. Je suis très heureux de voir quelqu'un me montrer mon visage de temps en temps. Je veux aussi me présenter. Mais la pièce est trop petite et sale!

Habituellement, vous abandonnez et nettoyez la pièce, ou installez un écran vert et créez une vidéo avec une composition chroma key. Mais je ne peux pas m'en débarrasser. .. ..

Le système de conférence Web largement utilisé dans l'entreprise est WebEx. Il n'y a pas de fonction de conversion d'arrière-plan comme Zoom, et je n'ai pas envie de la développer immédiatement comme Teams. .. .. J'utilise Zoom occasionnellement, mais la puissance de la machine n'est pas suffisante et un écran vert est indispensable. Mais il n'y a pas de place pour installer un écran vert. .. ..

Illusion

À propos, Zoom coupe non seulement le visage, mais également les mains et le haut du corps de l'arrière-plan. Un traitement lourd est-il donc nécessaire? ?? Si vous le divisez uniquement par détection de visage, vous devriez pouvoir le faire sur un PC faible sans trop de charge! ??

Concept

Comme ça.

Caméra Web-> Détection de la zone du visage avec OpenCV-> Extraire uniquement la zone du visage et la superposer sur l'image d'arrière-plan-> Sortie comme image de la caméra Web-> Utilisé avec WebEx et Zoom

En regardant ce billet de blog, la détection de visage semble bientôt possible avec OpenCV. .. J'ai fait des coupes et des superpositions dans la bibliothèque d'imagerie Python (Pillow). Si vous pouvez le traiter environ 5 fois par seconde, il devrait y avoir suffisamment de vidéo pour être utilisé dans une conférence Web. Maintenant, que dois-je faire pour générer l'image créée sous forme d'image de caméra Web? OpenCV ne semble pas avoir une telle fonction. Je n'ai pas trouvé de bibliothèque utilisable sur Mac ou Windows à partir de Python.

Ce n'est pas très intelligent, mais avec MacOS, il semble que CamTwist puisse capturer une partie de l'écran et laisser d'autres logiciels la reconnaître comme une caméra Web et la transmettre.

Je l'ai essayé

J'ai téléchargé le code sur GitHub. La partie que j'ai écrite est Python, mais j'utilise OpenCV et Qt. Puisqu'il est en GW, il n'a pas encore été mis en bataille. Je me demande si ce sera bientôt la prochaine conférence Web.

Recommended Posts

Il est difficile d'installer un écran vert, je n'ai donc découpé que le visage et l'ai superposé sur l'image de fond
Je veux découper uniquement le visage d'une image de personne avec Python et l'enregistrer ~ Détection de visage et rognage avec face_recognition ~
J'ai essayé de couper une image fixe de la vidéo
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
Je veux créer un histogramme et superposer la courbe de distribution normale dessus. édition matplotlib
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
Est-il facile de synthétiser un médicament sur le marché?
J'ai créé un script POST pour créer un problème sur Github et l'enregistrer dans le projet
J'ai exécuté GhostScript avec python, divisé le PDF en pages et l'ai converti en image JPEG.
Démarrez la webcam, prenez une image fixe et enregistrez-la localement
J'ai un package Python privé mais je souhaite installer pipenv sur GitHub Actions et créer une image Docker
Utilisez Pillow pour rendre l'image transparente et en superposer une partie seulement
Notez la solution car django n'a pas pu s'installer avec pip
J'ai fait un modèle de classification d'images et essayé de le déplacer sur mobile
Définir la valeur de division dans Django et la refléter facilement à l'écran
Notez que j'étais accro à la configuration de TensowFlow
L'arrière-plan des caractères de l'image texte est surexposé pour faciliter la lecture.
C'était une vie que je voulais faire de l'OCR sur AWS Lambda pour localiser les personnages.
[Rails] v1.0 est sorti sur google-cloud-vision de gem, j'ai donc essayé de le soutenir
Essayez de normaliser Coupez l'image avec scikit-image (bien qu'elle se fâche en chemin)
Comment savoir quel processus utilise le port localhost et l'arrêter
Je n'aime pas être frustré par la sortie de Pokemon Go, j'ai donc créé un script pour détecter la sortie et le tweeter
Il a fallu une demi-journée pour installer Polyglot dans l'environnement anaconda de mac, alors laissez une note
J'ai essayé d'installer scrapy sur Anaconda et je n'ai pas pu
J'ai créé un outil qui facilite un peu la création et l'installation d'une clé publique.
Quand j'ai essayé d'installer PIL et matplotlib dans un environnement virtualenv, j'en étais accro.
POSTEZ l'image sélectionnée sur le site Web avec multipart / form-data et enregistrez-la sur Amazon S3! !!
J'ai essayé de créer un script qui retrace les tweets d'un utilisateur spécifique sur Twitter et enregistre l'image publiée à la fois