from PIL import Image, ImageDraw from IPython.display import display # The program we will be finding faces on the example below pil_im = Image.open('two.png') display(pil_im)
!pip install face_recognition==1.3.0
WARNING: The directory '/home/jovyan/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting face_recognition==1.3.0 Downloading face_recognition-1.3.0-py2.py3-none-any.whl (15 kB) Collecting face-recognition-models>=0.3.0 Downloading face_recognition_models-0.3.0.tar.gz (100.1 MB) |████████████████████████████████| 100.1 MB 13.0 MB/s Collecting Click>=6.0 Downloading click-7.1.2-py2.py3-none-any.whl (82 kB) |████████████████████████████████| 82 kB 40.9 MB/s Collecting dlib>=19.7 Downloading dlib-19.21.1.tar.gz (3.6 MB) |████████████████████████████████| 3.6 MB 73.9 MB/s Requirement already satisfied: numpy in /opt/venv/lib/python3.7/site-packages (from face_recognition==1.3.0) (1.19.4) Requirement already satisfied: Pillow in /opt/venv/lib/python3.7/site-packages (from face_recognition==1.3.0) (8.0.1) Building wheels for collected packages: face-recognition-models, dlib Building wheel for face-recognition-models (setup.py) ... done Created wheel for face-recognition-models: filename=face_recognition_models-0.3.0-py2.py3-none-any.whl size=100566173 sha256=d641325d1bd936ce4eae84e1bf232dc23f791bb4d587caa9bd5d26cbcd6949ff Stored in directory: /tmp/pip-ephem-wheel-cache-57u2jq2h/wheels/d6/81/3c/884bcd5e1c120ff548d57c2ecc9ebf3281c9a6f7c0e7e7947a Building wheel for dlib (setup.py) ... done Created wheel for dlib: filename=dlib-19.21.1-cp37-cp37m-linux_x86_64.whl size=4125358 sha256=a31dc6d37766f02321ee889819ed3883f018d281d619854a5ee276e99ecbcd3d Stored in directory: /tmp/pip-ephem-wheel-cache-57u2jq2h/wheels/5d/c7/2e/dbc03dee6b56b674ceaff67b19bd80de63f09bacafde5cb78d Successfully built face-recognition-models dlib Installing collected packages: face-recognition-models, Click, dlib, face-recognition Successfully installed Click-7.1.2 dlib-19.21.1 face-recognition-1.3.0 face-recognition-models-0.3.0 WARNING: You are using pip version 20.2.4; however, version 20.3.3 is available. You should consider upgrading via the '/opt/venv/bin/python -m pip install --upgrade pip' command.
import face_recognition import numpy as np from PIL import Image, ImageDraw from IPython.display import display # This is an example of running face recognition on a single image # and drawing a box around each person that was identified. # Load a sample picture and learn how to recognize it. poppins_image = face_recognition.load_image_file("poppins.png") poppins_face_encoding = face_recognition.face_encodings(poppins_image) # Load a second sample picture and learn how to recognize it. smith_image = face_recognition.load_image_file("smith.png") smith_face_encoding = face_recognition.face_encodings(smith_image) # Create arrays of known face encodings and their names known_face_encodings = [ poppins_face_encoding, smith_face_encoding ] known_face_names = [ "Mary Poppins", "Agent Smith" ] print('Learned encoding for', len(known_face_encodings), 'images.')
Learned encoding for 2 images.
# Load an image with an unknown face unknown_image = face_recognition.load_image_file("poppins_ and_smith.png") # 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(known_face_encodings, face_encoding) name = "Unknown" # Or instead, use the known face with the smallest distance to the new face face_distances = face_recognition.face_distance(known_face_encodings, face_encoding) best_match_index = np.argmin(face_distances) if matches[best_match_index]: name = known_face_names[best_match_index] # Draw a box around the face using the Pillow module draw.rectangle(((left, top), (right, bottom)), outline=(0, 0, 255)) # Draw a label with a name below the face text_width, text_height = draw.textsize(name) draw.rectangle(((left, bottom - text_height - 10), (right, bottom)), fill=(0, 0, 255), outline=(0, 0, 255)) draw.text((left + 6, bottom - text_height - 5), name, fill=(255, 255, 255, 255)) # Remove the drawing library from memory as per the Pillow docs del draw # Display the resulting image display(pil_image)
FileNotFoundError: [Errno 2] No such file or directory: 'poppins_ and_smith.png'