# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     name: python3
# ---

# + [markdown] id="view-in-github" colab_type="text"
# <a href="https://colab.research.google.com/github/HiteshAI/Projects/blob/master/face_recgnition.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>

# + id="BqEdABAKr8sI" colab_type="code" colab={}
# install dlib (will take 10 or more minutes)
# # !apt update
# # !apt install -y cmake
# # !pip3 install dlib
# !sudo pip install -v --install-option="--no" --install-option="DLIB_USE_CUDA" dlib
# !pip3 install face_recognition

# + id="MG7pYuXBqaHH" colab_type="code" colab={}
from PIL import Image, ImageDraw
from IPython.display import display

detect_imag = 'all3.jpg'
face_1 = 'kp.jpg'
face_2 = 'pd.jpg'
face_3 = 'deuba.jpg'

# The program we will be finding faces on the example below
pil_im1 = Image.open(detect_imag)
display(pil_im1)
pil_im2 = Image.open(face_1)
display(pil_im2)
pil_im3 = Image.open(face_2)
display(pil_im3)




# + id="zf5UjTd-qhVB" colab_type="code" colab={}
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.
kp_image = face_recognition.load_image_file(face_1)
kp_face_encoding = face_recognition.face_encodings(kp_image)[0]

# Load a second sample picture and learn how to recognize it.
pd_image = face_recognition.load_image_file(face_2)
pd_face_encoding = face_recognition.face_encodings(pd_image)[0]

# Load a second sample picture and learn how to recognize it.
deuba_image = face_recognition.load_image_file(face_3)
deuba_face_encoding = face_recognition.face_encodings(deuba_image)[0]


# Create arrays of known face encodings and their names
known_face_encodings = [
    kp_face_encoding,
    pd_face_encoding,
    deuba_face_encoding
]
known_face_names = [
    str(face_1),
    str(face_2),
    str(face_3)
]
print('Learned encoding for', len(known_face_encodings), 'images.')

# + id="3K1X7mYWtQvk" colab_type="code" colab={}
# Load an image with an unknown face
unknown_image = face_recognition.load_image_file(detect_imag)

# 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)

StarcoderdataJupyterScriptsDedupFiltered