Il va sans dire que le monde dans lequel les informations sont échangées ces jours-ci et la vie privée des personnes sont considérés comme importants. En raison de cette époque, nous avons besoin de quelque chose qui protège notre vie privée ... Je le pensais, j'y ai pensé.
** Dois-je pouvoir regarder les photos ...? **
Alors je l'ai fait.
(Honnêtement, je l'ai fait sans réfléchir.)
J'ai réalisé que pour avoir un coup d'œil, il fallait d'abord reconnaître ses yeux et son visage. Par conséquent, j'ai décidé d'utiliser une bibliothèque qui reconnaît les visages et une bibliothèque qui reconnaît les yeux dans les données OpenCV. Je ne suis pas sûr des détails, mais d'une manière ou d'une autre, seul le code de reconnaissance du visage est tombé, alors j'ai joué un peu avec et le programme de reconnaissance des yeux était terminé. (La bibliothèque qui est descendue est [à partir d'ici](https://qiita.com/GoshBird/items/c0c241d08087c70aa394#%E7%94%BB%E5%83%8F%E3%82%92%E8%AA%AD% E3% 82% 80) Veuillez voir.)
Voici une photo créée en l'utilisant. Le visage est tracé comme un carré et les yeux sont tracés comme un cercle. On dirait qu'un enfant fait un grand trou avec un stylo rouge dans le trou de l'image. Cependant, il y a un problème avec cette image, et vous pouvez voir qu'elle reconnaît le nez, la bouche et même la double mâchoire comme des yeux. Cela ne peut pas protéger la vie privée ...!
J'ai donc pensé aux traits du visage. Probablement, si le cerveau n'est pas très gros, les yeux devraient être au-dessus de la moitié du visage. Par conséquent, j'ai décidé de ne faire que les points qui sont plus de la moitié au-dessus du carré du visage reconnu comme des yeux.
Ce faisant, j'ai pu écrire la relation entre le visage et les yeux, donc la taille du carré de la ligne de visée est conforme au carré du visage en largeur, et la verticale est le sommet de tous les endroits reconnus comme yeux J'ai essayé d'adopter la partie et la partie inférieure.
Le programme écrit avec ceci est le programme ci-dessous.
Wanted_photo.ipynb
import cv2
import matplotlib.pyplot as plt
image_name = input("File Name?")
src=cv2.imread(image_name)
image_gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY) #Échelle de gris
color=(0,0,255) #Mec Kakomu(rouge)
color_c=(255,0,0) #Celui qui frappe(point,Bleu)
cascade = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml") #Importation des données d'entraînement
# eye_right = cv2.CascadeClassifier("haarcascade_righteye_2splits.xml")#Données de l'œil droit
# eye_left = cv2.CascadeClassifier("haarcascade_lefteye_2splits.xml")#Données de l'œil gauche
eyecascade = cv2.CascadeClassifier("haarcascade_eye.xml")#Données oculaires
#Un sort à gérer
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(50,50))
# reyerect = eye_right.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(30,30))
# leyerect = eye_left.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(30,30))
eyerect = eyecascade.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(30,30))
max_width = 0
upper_heigh = 99999
lower_heigh = 0
max_rect = [0,0,0,0]
if len(facerect) > 0:#Celui qui décide de la largeur
for rect in facerect:
#print(rect[0:4])
if rect[2] > max_width:
max_width = rect[2] - rect[0]
max_rect = rect[0:4]
if len(eyerect) > 0:#Celui qui décide de la largeur verticale
for rect in eyerect:
#print(rect[0:4])
if max_rect[0] < rect[0] and max_rect[0] + max_rect[2] > rect[0] + rect[2] and max_rect[1] < rect[1] and max_rect[1] + max_rect[3] /2 > rect[1] + rect[3]/2:
if upper_heigh >rect[1]:
upper_heigh = rect[1]
elif lower_heigh < rect[1] + rect[3]:
lower_heigh = rect[1] + rect[3]
rect[0:4] = [max_rect[0],upper_heigh,max_rect[2],lower_heigh - upper_heigh]#Le gars qui pose ses yeux
cv2.rectangle(src,tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]),(0,0,0),thickness = -10)
print(rect[0:4])
cv2.imwrite(image_name+"_result_eye.jpg ",src)#Celui à sauver
cv2.destroyAllWindows() #Sentiment de mémoire ouverte
Il y a quelques traces d'essais et d'erreurs, mais ne vous inquiétez pas!
Donc, quand j'ai traité la photo précédente, ça ressemblait à ça. Bonnes vibrations! Le meilleur!
Ainsi, j'ai pu protéger la vie privée du monde.
Cela dit, en fait, c'est une spécification qu'une seule personne peut protéger la vie privée par photo, donc je pense que c'est pratique uniquement sur le blog d'un célèbre blogueur (et la première photo de face). .. C'est triste! (J'ai vérifié tous les visages, et s'il n'y a pas d'yeux applicables, j'ai l'impression de pouvoir le faire avec le visage suivant sans le regarder ...) De plus, le taux de réponse correcte était d'environ 70% comme je l'ai confirmé. Il peut y avoir place à l'amélioration en termes de précision ...
Ou plutôt, je pense que je devrais utiliser une autre bibliothèque sans utiliser OpenCV ...
Donc, si vous en avez envie à nouveau, je protégerai la vie privée d'un grand nombre de personnes!
(Merci d'avoir joué jusqu'à la fin.)
Recommended Posts