aieye/face_recognition_tutorial
0
1from utils.database import get_database2import os3import face_recognition4import cv25import numpy as np6from PIL import Image7import streamlit as st8 9PKL_PATH = 'dataset/database.pkl'10 11def recognize(image,tolerance):12 database = get_database(PKL_PATH)13 known_encoding = [database[id]['encoding'] for id in database.keys()]14 name = 'Unknown'15 face_id = 'Unknown'16 face_locations = face_recognition.face_locations(image)17 face_encodings = face_recognition.face_encodings(image,face_locations)18 for (top,right,bottom,left), face_encoding in zip(face_locations,face_encodings):19 matches = face_recognition.compare_faces(known_encoding,face_encoding,tolerance=tolerance)20 distances = face_recognition.face_distance(known_encoding,face_encoding)21 name = 'Unknown'22 face_id = 'Unknown'23 distance = 10000024 for i in range(len(matches)):25 if matches[i].all():26 match_index = i27 temp_dist = round(np.sum(distances[match_index]),2)28 if temp_dist < distance:29 distance = temp_dist30 name = database[match_index]['name']31 face_id = database[match_index]['face_id'].split("_")[1]32 # cv2.putText(image,str(distance),(left,top-30),cv2.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),2)33 cv2.rectangle(image,(left,top),(right,bottom),(0,255,0),2)34 cv2.putText(image,name,(left,top-10),cv2.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),2)35 return image, name, face_id36 