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.
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()
La coordination de l'image originale ressemble à ceci. (Utilisez les photos qui sont populaires ...)
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 ...
É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