From be78b594678b449d731108bec07ddcf3f9723add Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 29 Jan 2025 07:24:49 -0700 Subject: [PATCH] Fix crash when no faces exist --- frigate/data_processing/real_time/face_processor.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/frigate/data_processing/real_time/face_processor.py b/frigate/data_processing/real_time/face_processor.py index fe40df2f3..ee981f5ec 100644 --- a/frigate/data_processing/real_time/face_processor.py +++ b/frigate/data_processing/real_time/face_processor.py @@ -33,7 +33,7 @@ class FaceProcessor(RealTimeProcessorApi): self.face_config = config.face_recognition self.face_detector: cv2.FaceDetectorYN = None self.landmark_detector: cv2.face.FacemarkLBF = None - self.face_recognizer: cv2.face.LBPHFaceRecognizer = None + self.recognizer: cv2.face.LBPHFaceRecognizer = None self.requires_face_detection = "face" not in self.config.objects.all_objects self.detected_faces: dict[str, float] = {} @@ -114,6 +114,9 @@ class FaceProcessor(RealTimeProcessorApi): faces.append(img) labels.append(idx) + if not faces: + return + self.recognizer: cv2.face.LBPHFaceRecognizer = ( cv2.face.LBPHFaceRecognizer_create( radius=2, threshold=(1 - self.face_config.min_score) * 1000 @@ -212,9 +215,12 @@ class FaceProcessor(RealTimeProcessorApi): if not self.landmark_detector: return None - if not self.label_map: + if not self.recognizer: self.__build_classifier() + if not self.recognizer: + return None + img = cv2.cvtColor(face_image, cv2.COLOR_BGR2GRAY) img = self.__align_face(img, img.shape[1], img.shape[0]) index, distance = self.recognizer.predict(img)