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.
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()
Die Koordination des Originalbildes sieht so aus. (Verwenden Sie die Fotos, die beliebt sind ...)
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 ...
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