mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-18 09:04:28 +03:00
Actually send result to face registration
This commit is contained in:
parent
f1f3d46d9c
commit
8efdd8487a
@ -40,10 +40,10 @@ def get_faces():
|
|||||||
@router.post("/faces/{name}")
|
@router.post("/faces/{name}")
|
||||||
async def register_face(request: Request, name: str, file: UploadFile):
|
async def register_face(request: Request, name: str, file: UploadFile):
|
||||||
context: EmbeddingsContext = request.app.embeddings
|
context: EmbeddingsContext = request.app.embeddings
|
||||||
context.register_face(name, await file.read())
|
result = context.register_face(name, await file.read())
|
||||||
return JSONResponse(
|
return JSONResponse(
|
||||||
status_code=200,
|
status_code=200 if result.get("success", True) else 400,
|
||||||
content={"success": True, "message": "Successfully registered face."},
|
content=result,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -192,8 +192,8 @@ class EmbeddingsContext:
|
|||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def register_face(self, face_name: str, image_data: bytes) -> None:
|
def register_face(self, face_name: str, image_data: bytes) -> dict[str, any]:
|
||||||
self.requestor.send_data(
|
return self.requestor.send_data(
|
||||||
EmbeddingsRequestEnum.register_face.value,
|
EmbeddingsRequestEnum.register_face.value,
|
||||||
{
|
{
|
||||||
"face_name": face_name,
|
"face_name": face_name,
|
||||||
|
|||||||
@ -144,7 +144,10 @@ class EmbeddingMaintainer(threading.Thread):
|
|||||||
)
|
)
|
||||||
elif topic == EmbeddingsRequestEnum.register_face.value:
|
elif topic == EmbeddingsRequestEnum.register_face.value:
|
||||||
if not self.face_recognition_enabled:
|
if not self.face_recognition_enabled:
|
||||||
return False
|
return {
|
||||||
|
"message": "Face recognition is not enabled.",
|
||||||
|
"success": False,
|
||||||
|
}
|
||||||
|
|
||||||
rand_id = "".join(
|
rand_id = "".join(
|
||||||
random.choices(string.ascii_lowercase + string.digits, k=6)
|
random.choices(string.ascii_lowercase + string.digits, k=6)
|
||||||
@ -164,7 +167,10 @@ class EmbeddingMaintainer(threading.Thread):
|
|||||||
face_box = self._detect_face(img)
|
face_box = self._detect_face(img)
|
||||||
|
|
||||||
if not face_box:
|
if not face_box:
|
||||||
return False
|
return {
|
||||||
|
"message": "No face was detected.",
|
||||||
|
"success": False,
|
||||||
|
}
|
||||||
|
|
||||||
face = img[face_box[1] : face_box[3], face_box[0] : face_box[2]]
|
face = img[face_box[1] : face_box[3], face_box[0] : face_box[2]]
|
||||||
ret, thumbnail = cv2.imencode(
|
ret, thumbnail = cv2.imencode(
|
||||||
@ -181,7 +187,10 @@ class EmbeddingMaintainer(threading.Thread):
|
|||||||
output.write(thumbnail.tobytes())
|
output.write(thumbnail.tobytes())
|
||||||
|
|
||||||
self.face_classifier.clear_classifier()
|
self.face_classifier.clear_classifier()
|
||||||
return True
|
return {
|
||||||
|
"message": "Successfully registered face.",
|
||||||
|
"success": True,
|
||||||
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Unable to handle embeddings request {e}")
|
logger.error(f"Unable to handle embeddings request {e}")
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user