Spaces:
Sleeping
Sleeping
File size: 2,650 Bytes
5f5fb95 32780dd e0bb112 5f5fb95 610503e c242c73 610503e 4cb6fe1 610503e c242c73 610503e c242c73 610503e c242c73 610503e c242c73 610503e c242c73 5b98964 610503e c242c73 610503e c242c73 610503e 32780dd 610503e 32780dd 610503e 4cb6fe1 1c4942b 4cb6fe1 1c4942b 4cb6fe1 1c4942b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
import streamlit as st
import face_recognition
import cv2
import numpy as np
import os
def load_images(directory):
images = []
classnames = []
file_list = os.listdir(directory)
st.write("Photographs found in folder : ")
for file in file_list:
if os.path.splitext(file)[1] in [".jpg", ".jpeg"]:
img_path = os.path.join(directory, file)
cur_img = cv2.imread(img_path)
images.append(cur_img)
st.write(os.path.splitext(file)[0])
classnames.append(os.path.splitext(file)[0])
return images, classnames
def recognize_faces(test_image, known_encodings, class_names):
imgS = cv2.resize(test_image, (0, 0), None, 0.25, 0.25)
imgS = cv2.cvtColor(imgS, cv2.COLOR_BGR2RGB)
facesCurFrame = face_recognition.face_locations(imgS)
encodesCurFrame = face_recognition.face_encodings(imgS, facesCurFrame)
name = "Unknown" # Default name for unknown faces
match_found = False # Flag to track if a match is found
# Checking if faces are detected
if len(encodesCurFrame) > 0:
for encodeFace, faceLoc in zip(encodesCurFrame, facesCurFrame):
matches = face_recognition.compare_faces(known_encodings, encodeFace)
faceDis = face_recognition.face_distance(known_encodings, encodeFace)
matchIndex = np.argmin(faceDis)
if matches[matchIndex]:
name = class_names[matchIndex].upper()
match_found = True # Set the flag to True
y1, x2, y2, x1 = faceLoc
y1, x2, y2, x1 = (y1 * 4), (x2 * 4), (y2 * 4) ,(x1 * 4)
cv2.rectangle(test_image, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.rectangle(test_image, (x1, y2 - 35), (x2, y2), (0, 255, 0), cv2.FILLED)
cv2.putText(test_image, name, (x1 + 6, y2 - 6), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 2)
return test_image
st.title("AIMLJan24 - Face Recognition")
# Load images for face recognition
directory = "photos"
Images, classnames = load_images(directory)
# Load images for face recognition
encodeListknown = [face_recognition.face_encodings(img)[0] for img in Images]
# Camera input to take photo of user in question
capture = cv2.VideoCapture(0)
if capture.isOpened():
ret, frame = capture.read()
if ret:
# Recognize faces in the captured frame
image_with_recognition = recognize_faces(frame, encodeListknown, classnames)
st.image(image_with_recognition, channels="BGR", use_column_width=True)
else:
st.error("Failed to open camera.")
capture.release()
cv2.destroyAllWindows()
|