[PYTHON] Ich habe versucht, die Gesichtsverdeckungsarbeit des Koordinationsbildes für das Tragen zu automatisieren

Kennst du Wear? WEAR ist eine Website zur Modekoordination und eine unserer Dienstleistungen. Kurz gesagt, es ist ein SNS, der die Modekoordination jeder Person teilt.

Bei einer solchen Abnutzung kenne ich den Grund nicht, aber es scheint beliebt zu sein, das Gesicht mit einem Symbol usw. zu verstecken und es zu posten. Liegt es daran, dass Menschen ohne Gesicht die Koordination objektiv sehen können?

Das Verstecken des Gesichts ist jedoch unerwartet mühsam, und ich wünschte, ich könnte dies automatisieren. Deshalb habe ich ein Programm für die automatische Platzierung von Symbolen implementiert.

Quellcode

import os.path
import datetime
import cv2
import time

#Konstante
#Datenordner
DATA_PATH = "data"
#Ergebnisordner
RESULT_PATH = "result"
#Kaskadenpfad
CASCADE_PATH = "haarcascade_frontalface_default.xml"


def main():
    #Holen Sie sich das aktuelle Verzeichnis
    current_path = os.getcwd()
    icon_image_path = os.path.join(current_path, "icon.png ")
    icon_image = cv2.imread(cv2.samples.findFile(icon_image_path))

    #Datenverzeichnis abrufen
    data_path = os.path.join(current_path, DATA_PATH)
    #Datenverzeichnis abrufen
    result_path = os.path.join(current_path, RESULT_PATH)
    #Holen Sie sich eine Liste der Dateien direkt unter dem Verzeichnis
    data_list = os.listdir(data_path)

    for file in data_list:

        #Start der Messzeit für die Verarbeitungszeit
        start = time.time()

        #Dateierweiterung abrufen
        file_name, ext = os.path.splitext(file)

        #Wenn die Erweiterung PNG oder JPEG ist
        if ext == u'.png' or ext == u'.jpg' or ext == u'.jpeg':
            #Bild laden
            input_path = os.path.join(data_path, file)
            #Bildspeicher eingeben
            image = cv2.imread(cv2.samples.findFile(input_path))

            #Graustufenumwandlung
            image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

            #Ermitteln Sie die Merkmalsmenge des Kaskadenklassifikators
            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:
                    #Verstecke dein Gesicht
                    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 "))
            #Bild speichern
            cv2.imwrite(output_path, image)

            #Timer der Verarbeitungszeitmessung stoppen
            t = time.time() - start

            print(output_path, ":", t)


#Geben Sie einen eindeutigen Dateipfad einschließlich der Zeit aus
def create_time_path(file_name, ext):
    #Holen Sie sich die aktuelle Zeit
    time = datetime.datetime.now()
    #Erstellen Sie einen Pfad
    path = file_name + time.strftime("%Y%m%d%H%M%S") + ext

    return path


def put_icon(img, rect, icon_image):
    #Holen Sie sich den Bereich, der das Symbol abdeckt
    x1, y1, x2, y2 = rect
    w = x2 - x1
    h = y2 - y1
    #Überlagern Sie das Symbol auf dem Bild
    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()

Ausführungsergebnis

data.jpeg Die Koordination des Originalbildes sieht so aus. (Verwenden Sie die Fotos, die beliebt sind ...)

data20200129202956.png Nach der Ausführung passt das Icon perfekt! !! !! Die mühsame Arbeit kann in kürzester Zeit erledigt werden! !! Machen Sie sich keine Sorgen, dass das Symbolbild geeignet ist ...

Schließlich

Da die Genauigkeit der Gesichtserkennung nicht so gut ist, werden je nach Foto viele Symbole festgelegt. Daher ist es möglicherweise besser, sie leicht zu verwenden.

Recommended Posts

Ich habe versucht, die Gesichtsverdeckungsarbeit des Koordinationsbildes für das Tragen zu automatisieren
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe versucht, das SD-Boot-Image von LicheePi Nano zu erstellen
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe versucht, die Trefferergebnisse von Hachinai mithilfe der Bildverarbeitung zu erhalten
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
[Python] Ich habe versucht, das Mitgliederbild der Idolgruppe mithilfe von Keras zu beurteilen
Ich habe versucht, die 100-Yen-Lagerstätte von Rakuten-Pferderennen (Python / Selen) zu automatisieren.
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.
Ich habe versucht, Objekte aus dem Bild des Steak-Sets zu sortieren
Ich habe versucht, den Text in der Bilddatei mit Tesseract der OCR-Engine zu extrahieren
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, das Lachproblem mit Keras zu erkennen.
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Ich habe versucht, mich eingehender mit Sicherheit zu befassen, während ich die probabilistische Endgültigkeit von Proof of Work berechnet habe
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ① Objekterkennung
Ich habe versucht, die Erstellung einer praktischen Umgebung mithilfe der SoftLayer-API der IBM Cloud zu automatisieren
Ich habe vergessen, die Leistung zu bewerten, weil ich die Gewohnheit hatte, "Ich habe versucht, das schnellste Fizz Buzz anzustreben" zu überspringen.
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
[Linux] Ich habe versucht, die Ressourcenbestätigungsbefehle zusammenzufassen
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Ich habe versucht, das Bild mit OpenCV im "Bleistift-Zeichenstil" zu verarbeiten
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich habe versucht, ein Standbild aus dem Video auszuschneiden
Ich habe versucht, die häufig verwendete Implementierungsmethode von pytest-mock zusammenzufassen
Ich habe versucht, den allgemeinen Zustand der VTuber-Kanalbetrachter zu visualisieren
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ② Sortieren der Überlappungsnummern
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Ich habe versucht, das Bild durch Klicken mit der rechten und linken Maustaste in den angegebenen Ordner zu verschieben
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, die Altersgruppe und die Ratenverteilung von Atcoder zu visualisieren
Ich habe zum ersten Mal Tensorflow ausprobiert
Ich habe versucht, die Beispielnachrichten zur Geschäftsintegration in Amazon Transcribe zu übertragen
Ich habe versucht, eine Gesichtsdiagnose-KI für professionelle Golferinnen zu erstellen ①
Ich versuchte das Weckwort zu erkennen
zoom Ich habe versucht, den Grad der Aufregung der Geschichte auf der Konferenz zu quantifizieren
Ich habe versucht, den Unterschied zwischen Config vor und nach der Arbeit mit pyATS / Genie selbst erstelltem Skript zu berücksichtigen
Ich habe versucht, eine Gesichtsdiagnose-KI für professionelle Golferinnen zu erstellen ②
Ich habe versucht, Objekte aus dem Bild des Steak-Set-Essens zu sortieren - Ähnliches Bild Wärmekartenerkennung