Spaces:
Runtime error
Runtime error
File size: 1,539 Bytes
16eecd4 1717673 0cba43f f16075a 16eecd4 c5dfc36 16eecd4 8345b1c 16eecd4 8345b1c dd8073b 8345b1c 16eecd4 |
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 |
from utils.database import get_database
import os
import face_recognition
import cv2
import numpy as np
from PIL import Image
import streamlit as st
PKL_PATH = 'dataset/database.pkl'
def recognize(image,tolerance):
database = get_database(PKL_PATH)
known_encoding = [database[id]['encoding'] for id in database.keys()]
name = 'Unknown'
face_id = 'Unknown'
face_locations = face_recognition.face_locations(image)
face_encodings = face_recognition.face_encodings(image,face_locations)
for (top,right,bottom,left), face_encoding in zip(face_locations,face_encodings):
matches = face_recognition.compare_faces(known_encoding,face_encoding,tolerance=tolerance)
distances = face_recognition.face_distance(known_encoding,face_encoding)
name = 'Unknown'
face_id = 'Unknown'
distance = 100000
for i in range(len(matches)):
if matches[i].all():
match_index = i
temp_dist = round(np.sum(distances[match_index]),2)
if temp_dist < distance:
distance = temp_dist
name = database[match_index]['name']
face_id = database[match_index]['face_id'].split("_")[1]
# cv2.putText(image,str(distance),(left,top-30),cv2.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),2)
cv2.rectangle(image,(left,top),(right,bottom),(0,255,0),2)
cv2.putText(image,name,(left,top-10),cv2.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),2)
return image, name, face_id
|