mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-19 01:17:06 +03:00
Add API for reprocessing face
This commit is contained in:
parent
ab12995b8d
commit
2615ee669c
@ -100,6 +100,39 @@ def train_face(request: Request, name: str, body: dict = None):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/faces/train/{name}/reprocess")
|
||||||
|
def reclassify_face(request: Request, name: str, body: dict = None):
|
||||||
|
if not request.app.frigate_config.face_recognition.enabled:
|
||||||
|
return JSONResponse(
|
||||||
|
status_code=400,
|
||||||
|
content={"message": "Face recognition is not enabled.", "success": False},
|
||||||
|
)
|
||||||
|
|
||||||
|
json: dict[str, any] = body or {}
|
||||||
|
training_file = os.path.join(
|
||||||
|
FACE_DIR, f"train/{sanitize_filename(json.get('training_file', ''))}"
|
||||||
|
)
|
||||||
|
|
||||||
|
if not training_file or not os.path.isfile(training_file):
|
||||||
|
return JSONResponse(
|
||||||
|
content=(
|
||||||
|
{
|
||||||
|
"success": False,
|
||||||
|
"message": f"Invalid filename or no file exists: {training_file}",
|
||||||
|
}
|
||||||
|
),
|
||||||
|
status_code=404,
|
||||||
|
)
|
||||||
|
|
||||||
|
context: EmbeddingsContext = request.app.embeddings
|
||||||
|
response = context.reprocess_face()
|
||||||
|
|
||||||
|
return JSONResponse(
|
||||||
|
content=response,
|
||||||
|
status_code=200,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/faces/{name}/delete")
|
@router.post("/faces/{name}/delete")
|
||||||
def deregister_faces(request: Request, name: str, body: dict = None):
|
def deregister_faces(request: Request, name: str, body: dict = None):
|
||||||
if not request.app.frigate_config.face_recognition.enabled:
|
if not request.app.frigate_config.face_recognition.enabled:
|
||||||
|
|||||||
@ -401,7 +401,7 @@ class FaceProcessor(RealTimeProcessorApi):
|
|||||||
"message": "Successfully registered face.",
|
"message": "Successfully registered face.",
|
||||||
"success": True,
|
"success": True,
|
||||||
}
|
}
|
||||||
elif topic == EmbeddingsRequestEnum.reprocess_face:
|
elif topic == EmbeddingsRequestEnum.reprocess_face.value:
|
||||||
current_file = request_data["image_file"]
|
current_file = request_data["image_file"]
|
||||||
face_score = current_file[current_file.rfind("-") : current_file.rfind(".")]
|
face_score = current_file[current_file.rfind("-") : current_file.rfind(".")]
|
||||||
img = None
|
img = None
|
||||||
|
|||||||
@ -211,6 +211,11 @@ class EmbeddingsContext:
|
|||||||
|
|
||||||
return self.db.execute_sql(sql_query).fetchall()
|
return self.db.execute_sql(sql_query).fetchall()
|
||||||
|
|
||||||
|
def reprocess_face(self, face_file: str) -> dict[str, any]:
|
||||||
|
return self.requestor.send_data(
|
||||||
|
EmbeddingsRequestEnum.reprocess_face.value, {"image_file": face_file}
|
||||||
|
)
|
||||||
|
|
||||||
def clear_face_classifier(self) -> None:
|
def clear_face_classifier(self) -> None:
|
||||||
self.requestor.send_data(
|
self.requestor.send_data(
|
||||||
EmbeddingsRequestEnum.clear_face_classifier.value, None
|
EmbeddingsRequestEnum.clear_face_classifier.value, None
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user