[PYTHON] J'ai essayé d'automatiser le travail de masquage du visage de l'image de coordination pour l'usure

Connaissez-vous Wear? WEAR est un site de coordination mode et l'un de nos services. Bref, c'est un SNS qui partage la coordination mode de chacun.

Dans une telle usure, je ne connais pas la raison, mais il semble qu'il soit populaire de cacher le visage avec une icône etc. et de le poster. Est-ce parce que les personnes sans visage peuvent voir objectivement la coordination?

Cependant, le travail de masquage du visage est inopinément gênant, et j'aimerais pouvoir automatiser cela ... alors j'ai implémenté un programme pour le placement automatique des icônes.

Code source

import os.path
import datetime
import cv2
import time

#constant
#dossier de données
DATA_PATH = "data"
#dossier de résultats
RESULT_PATH = "result"
#Chemin de la cascade
CASCADE_PATH = "haarcascade_frontalface_default.xml"


def main():
    #Obtenez le répertoire actuel
    current_path = os.getcwd()
    icon_image_path = os.path.join(current_path, "icon.png ")
    icon_image = cv2.imread(cv2.samples.findFile(icon_image_path))

    #Obtenir le répertoire de données
    data_path = os.path.join(current_path, DATA_PATH)
    #Obtenir le répertoire de données
    result_path = os.path.join(current_path, RESULT_PATH)
    #Obtenez une liste de fichiers directement sous le répertoire
    data_list = os.listdir(data_path)

    for file in data_list:

        #Début de la minuterie de mesure du temps de traitement
        start = time.time()

        #Obtenir l'extension de fichier
        file_name, ext = os.path.splitext(file)

        #Lorsque l'extension est png ou jpeg
        if ext == u'.png' or ext == u'.jpg' or ext == u'.jpeg':
            #Charger l'image
            input_path = os.path.join(data_path, file)
            #Stockage d'image d'entrée
            image = cv2.imread(cv2.samples.findFile(input_path))

            #Conversion de l'échelle de gris
            image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

            #Acquérir la quantité de caractéristiques du classificateur en cascade
            cascade = cv2.CascadeClassifier(CASCADE_PATH)

            face_rect = cascade.detectMultiScale(image_gray, 1.1, 3, 5)

            if 0 < len(face_rect):

                print("Face discovery")

                for x, y, w, h in face_rect:
                    #Cache ton visage
                    image = put_icon(image, (x, y, x + w, y + h), icon_image)

            else:

                print("Face not found")

            output_path = os.path.join(result_path, create_time_path(file_name, ".png "))
            #Enregistrer l'image
            cv2.imwrite(output_path, image)

            #Arrêt de la minuterie de mesure du temps de traitement
            t = time.time() - start

            print(output_path, ":", t)


#Sortie d'un chemin de fichier unique avec l'heure
def create_time_path(file_name, ext):
    #Obtenez l'heure actuelle
    time = datetime.datetime.now()
    #Créer un chemin
    path = file_name + time.strftime("%Y%m%d%H%M%S") + ext

    return path


def put_icon(img, rect, icon_image):
    #Obtenez la zone pour couvrir l'icône
    x1, y1, x2, y2 = rect
    w = x2 - x1
    h = y2 - y1
    #Superposer l'icône sur l'image
    img2 = img.copy()
    icon_image = cv2.resize(icon_image, (w, h), cv2.INTER_AREA)
    img2[y1:y2, x1:x2] = icon_image
    return img2

if __name__ == '__main__':
    main()

Résultat d'exécution

data.jpeg La coordination de l'image originale ressemble à ceci. (Utilisez les photos qui sont populaires ...)

data20200129202956.png Après exécution, l'icône s'adapte parfaitement! !! !! Le travail pénible peut être effectué en un rien de temps! !! Ne vous inquiétez pas si l'image de l'icône convient ...

finalement

Étant donné que la précision de la reconnaissance faciale n'est pas très bonne, de nombreuses icônes seront définies en fonction de la photo, il peut donc être préférable de l'utiliser légèrement.

Recommended Posts

J'ai essayé d'automatiser le travail de masquage du visage de l'image de coordination pour l'usure
J'ai essayé de corriger la forme trapézoïdale de l'image
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
J'ai essayé de créer l'image de démarrage SD de LicheePi Nano
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé d'utiliser le filtre d'image d'OpenCV
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
[Python] J'ai essayé de juger l'image du membre du groupe d'idols en utilisant Keras
J'ai essayé d'automatiser le dépôt de 100 yens des courses de chevaux Rakuten (python / sélénium)
J'ai essayé de traiter et de transformer l'image et d'élargir les données pour l'apprentissage automatique
J'ai essayé de résumer la forme de base de GPLVM
J'ai essayé le tutoriel MNIST de tensorflow pour les débutants.
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de classer les voix des acteurs de la voix
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
J'ai essayé de trier les objets de l'image du plat de steak-④ Clustering
J'ai essayé d'extraire le texte du fichier image en utilisant Tesseract du moteur OCR
J'ai essayé de porter le code écrit pour TensorFlow sur Theano
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé la reconnaissance faciale du problème du rire en utilisant Keras.
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
J'ai essayé de combattre le minimum local de la fonction Goldstein-Price
J'ai essayé d'approfondir la sécurité tout en calculant la finalité probabiliste de la preuve de travail
J'ai essayé de trier les objets de l'image du plat de steak-① Détection d'objets
J'ai essayé d'automatiser la construction d'un environnement pratique à l'aide de l'API SoftLayer d'IBM Cloud
J'ai oublié d'évaluer les performances à cause de l'habitude de sauter "J'ai essayé de viser le Fizz Buzz le plus rapide"
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
[Linux] J'ai essayé de résumer les commandes de confirmation des ressources
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
J'ai essayé d'agrandir la taille du volume logique avec LVM
J'ai essayé de couper une image fixe de la vidéo
J'ai essayé de résumer la méthode de mise en œuvre fréquemment utilisée de pytest-mock
J'ai essayé de visualiser la condition commune des téléspectateurs de la chaîne VTuber
J'ai essayé de trier les objets de l'image du plat de steak-② Tri des numéros de chevauchement
J'ai essayé le serveur asynchrone de Django 3.0
J'ai essayé de déplacer l'image vers le dossier spécifié en faisant un clic droit et un clic gauche
J'ai essayé de résumer la commande umask
J'ai essayé de visualiser la tranche d'âge et la distribution des taux d'Atcoder
J'ai essayé tensorflow pour la première fois
J'ai essayé de transcrire les actualités de l'exemple d'intégration commerciale sur Amazon Transcribe
J'ai essayé de faire un diagnostic de visage AI pour les golfeuses professionnelles ①
J'ai essayé de reconnaître le mot de réveil
zoom J'ai essayé de quantifier le degré d'excitation de l'histoire lors de la conférence
J'ai essayé de faire la différence de Config avant et après le travail avec le script pyATS / Genie self-made
J'ai essayé de faire un diagnostic de visage AI pour les golfeuses professionnelles ②
J'ai essayé de trier les objets de l'image du plat de steak --③ Image similaire Détection de carte de chaleur