Skip to content

Instantly share code, notes, and snippets.

@giljr
Created October 23, 2022 00:03
Show Gist options
  • Save giljr/ed68f7cc34ae400e8779837c8d6dfdf4 to your computer and use it in GitHub Desktop.
Save giljr/ed68f7cc34ae400e8779837c8d6dfdf4 to your computer and use it in GitHub Desktop.
import face_recognition
import numpy as np
from PIL import Image, ImageDraw
# Load a sample picture and learn how to recognize it.
known_image = face_recognition.load_image_file("toby.jpg")
encoding = face_recognition.face_encodings(known_image)[0]
# Load an image with unknown faces
unknown_image = face_recognition.load_image_file("office.jpg")
# Find all the faces and face encodings in the unknown image
face_locations = face_recognition.face_locations(unknown_image)
face_encodings = face_recognition.face_encodings(unknown_image, face_locations)
# Convert the image to a PIL-format image so that we can draw on top of it with the Pillow library
# See http://pillow.readthedocs.io/ for more about PIL/Pillow
pil_image = Image.fromarray(unknown_image)
# Create a Pillow ImageDraw Draw instance to draw with
draw = ImageDraw.Draw(pil_image)
# Loop through each face found in the unknown image
for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
# See if the face is a match for the known face(s)
matches = face_recognition.compare_faces([encoding], face_encoding)
# Use the known face with the smallest distance to the new face
face_distances = face_recognition.face_distance([encoding], face_encoding)
best_match_index = np.argmin(face_distances)
if matches[best_match_index]:
# Draw a box around the face using the Pillow module
draw.rectangle(((left - 20, top - 20), (right + 20, bottom + 20)), outline=(0, 255, 0), width=20)
# Remove the drawing library from memory as per the Pillow docs
del draw
# Display the resulting image
pil_image.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment