From 3429fe442f1c6a5c320144d597c42d2798847bc2 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 26 Mar 2025 09:36:16 -0600 Subject: [PATCH] Handle case where face recognition does not respond --- frigate/api/classification.py | 20 ++++++++++++++++++++ frigate/data_processing/real_time/face.py | 2 ++ 2 files changed, 22 insertions(+) diff --git a/frigate/api/classification.py b/frigate/api/classification.py index d3ee9c3d9..975a41c9d 100644 --- a/frigate/api/classification.py +++ b/frigate/api/classification.py @@ -198,6 +198,16 @@ async def register_face(request: Request, name: str, file: UploadFile): context: EmbeddingsContext = request.app.embeddings result = context.register_face(name, await file.read()) + + if not isinstance(result, dict): + return JSONResponse( + status_code=500, + content={ + "success": False, + "message": "Could not process request. Try restarting Frigate.", + }, + ) + return JSONResponse( status_code=200 if result.get("success", True) else 400, content=result, @@ -214,6 +224,16 @@ async def recognize_face(request: Request, file: UploadFile): context: EmbeddingsContext = request.app.embeddings result = context.recognize_face(await file.read()) + + if not isinstance(result, dict): + return JSONResponse( + status_code=500, + content={ + "success": False, + "message": "Could not process request. Try restarting Frigate.", + }, + ) + return JSONResponse( status_code=200 if result.get("success", True) else 400, content=result, diff --git a/frigate/data_processing/real_time/face.py b/frigate/data_processing/real_time/face.py index 9b479a527..935adf84f 100644 --- a/frigate/data_processing/real_time/face.py +++ b/frigate/data_processing/real_time/face.py @@ -186,6 +186,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi): if not face_box: logger.debug("Detected no faces for person object.") + cv2.imwrite(f"/media/frigate/face_detect/{datetime.datetime.now().timestamp()}_miss.jpg", person) return face_frame = person[ @@ -195,6 +196,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi): try: face_frame = cv2.cvtColor(face_frame, cv2.COLOR_RGB2BGR) + cv2.imwrite(f"/media/frigate/face_detect/{datetime.datetime.now().timestamp()}_hit.jpg", person) except Exception: return else: