Aula 03 – Python – Biblioteca Face Recognition – Identificando rostos
Aula 03 – Python – Face Recognition – Identificando faces
Biblioteca Face Recognition – Identificando rostos
Voltar para página principal do blog
Todas as aulas desse curso
Aula 02 Aula 04 (Ainda não disponível)
Código da aula:
https://github.com/toticavalcanti/codigo-fluente-face-recognition-tutorial
Documentação oficial do Face Recognition:
https://github.com/ageitgey/face_recognition
Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook
Link do código fluente no Pinterest
Meus links de afiliados:
Hostinger
Digital Ocean
One.com
Melhore seu NETWORKING
Participe de comunidades de desenvolvedores:
Aula 03
Biblioteca Face Recognition – Identificando rostos na imagem
Nessa aula vamos ver mais dois exemplos, o primeiro é o pullfaces.py, nele iremos usar uma das imagens de grupo, e fazer o face_recognition pegar cada rosto na foto, recortar e salvar na pasta /saved_images/, usando o PIL.
E o segundo exemplo é o identify.py, onde vamos identificar as pessoas em uma foto, desenhando um quadrado delimitador em torno do rosto, colocando o nome delas em baixo de cada foto e salvando a foto como /saved_images/identified.jpg.
PIL
PIL é uma biblioteca da linguagem de programação Python que adiciona suporte à abertura e gravação de muitos formatos de imagem diferentes.
O módulo Image fornece uma classe com o mesmo nome, usada para representar uma imagem PIL.
O módulo também fornece várias funções, funções para carregar imagens de arquivos, para criar novas imagens, etc.
Vamos lá:
pullfaces.py
from PIL import Image
import face_recognition
image = face_recognition.load_image_file('./img/groups/team1.jpg')
face_locations = face_recognition.face_locations(image)
for face_location in face_locations:
top, right, bottom, left = face_location
face_image = image[top:bottom, left:right]
pil_image = Image.fromarray(face_image)
# pil_image.show()
pil_image.save(f'./saved_images/{top}.jpg')
identify.py
import face_recognition
from PIL import Image, ImageDraw
image_of_silvio_santos = face_recognition.load_image_file('./img/known/silvio_santos.jpg')
silvio_santos_face_encoding = face_recognition.face_encodings(image_of_silvio_santos)[0]
image_of_faustao = face_recognition.load_image_file('./img/known/faustao.jpg')
faustao_face_encoding = face_recognition.face_encodings(image_of_faustao)[0]
image_of_xuxa = face_recognition.load_image_file('./img/known/xuxa.jpg')
xuxa_face_encoding = face_recognition.face_encodings(image_of_xuxa)[0]
# Create arrays of encodings and names
known_face_encodings = [
silvio_santos_face_encoding,
faustao_face_encoding,
xuxa_face_encoding
]
known_face_names = [
"Silvio Santos",
"Fausto Silva",
"Xuxa"
]
# Load test image to find faces in
test_image = face_recognition.load_image_file('./img/groups/xuxa_fausto_silvio.jpg')
# Find faces in test image
face_locations = face_recognition.face_locations(test_image)
face_encodings = face_recognition.face_encodings(test_image, face_locations)
# Convert to PIL format
pil_image = Image.fromarray(test_image)
# Create a ImageDraw instance
draw = ImageDraw.Draw(pil_image)
# Loop through faces in test image
for(top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
name = "Unknown Person"
# If match
if True in matches:
first_match_index = matches.index(True)
name = known_face_names[first_match_index]
# Draw box
draw.rectangle(((left, top), (right, bottom)), outline=(255,255,0))
# Draw label
text_width, text_height = draw.textsize(name)
draw.rectangle(((left,bottom - text_height - 10), (right, bottom)), fill=(255,255,0), outline=(255,255,0))
draw.text((left + 6, bottom - text_height - 5), name, fill=(0,0,0))
del draw
# Display image
pil_image.show()
# Save image
pil_image.save('./saved_images/identified.jpg')