Spaces:
Build error
Build error
| # backend/core/face_recognition.py | |
| import face_recognition | |
| import numpy as np | |
| import pickle | |
| import os | |
| class FaceRecognizer: | |
| def __init__(self, encodings_path='models/face_encodings.pkl'): | |
| self.known_face_encodings = [] | |
| self.known_face_names = [] | |
| self.load_encodings(encodings_path) | |
| def load_encodings(self, path): | |
| """Load pre-computed face encodings""" | |
| if os.path.exists(path): | |
| with open(path, 'rb') as f: | |
| data = pickle.load(f) | |
| self.known_face_encodings = data['encodings'] | |
| self.known_face_names = data['names'] | |
| def recognize_face(self, face_img): | |
| """Recognize a single face""" | |
| if face_img is None or face_img.size == 0: | |
| return None | |
| # Get face encoding | |
| face_locations = face_recognition.face_locations(face_img) | |
| if not face_locations: | |
| return None | |
| face_encoding = face_recognition.face_encodings(face_img, face_locations)[0] | |
| # Compare with known faces | |
| matches = face_recognition.compare_faces( | |
| self.known_face_encodings, | |
| face_encoding | |
| ) | |
| if True in matches: | |
| matched_index = matches.index(True) | |
| return self.known_face_names[matched_index] | |
| return None |