From e7c6b2d571554c308f2e2c458aa57006b3fee03e Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 19 Mar 2025 20:52:55 -0600 Subject: [PATCH] Fix per camera config (#17263) * Fix per camera config * fix --- frigate/config/classification.py | 6 +++++- frigate/config/config.py | 2 ++ frigate/data_processing/common/license_plate/mixin.py | 10 ++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/frigate/config/classification.py b/frigate/config/classification.py index db555063b..74eee0a55 100644 --- a/frigate/config/classification.py +++ b/frigate/config/classification.py @@ -1,7 +1,7 @@ from enum import Enum from typing import Dict, List, Optional -from pydantic import Field +from pydantic import ConfigDict, Field from .base import FrigateBaseModel @@ -86,6 +86,8 @@ class CameraFaceRecognitionConfig(FrigateBaseModel): default=500, title="Min area of face box to consider running face recognition." ) + model_config = ConfigDict(extra="ignore", protected_namespaces=()) + class LicensePlateRecognitionConfig(FrigateBaseModel): enabled: bool = Field(default=False, title="Enable license plate recognition.") @@ -129,3 +131,5 @@ class CameraLicensePlateRecognitionConfig(FrigateBaseModel): default=1000, title="Minimum area of license plate to begin running recognition.", ) + + model_config = ConfigDict(extra="ignore", protected_namespaces=()) diff --git a/frigate/config/config.py b/frigate/config/config.py index f77a83f28..c27cd365d 100644 --- a/frigate/config/config.py +++ b/frigate/config/config.py @@ -437,6 +437,8 @@ class FrigateConfig(FrigateBaseModel): include={ "audio": ..., "birdseye": ..., + "face_recognition": ..., + "lpr": ..., "record": ..., "snapshots": ..., "live": ..., diff --git a/frigate/data_processing/common/license_plate/mixin.py b/frigate/data_processing/common/license_plate/mixin.py index c07163819..52f59e71a 100644 --- a/frigate/data_processing/common/license_plate/mixin.py +++ b/frigate/data_processing/common/license_plate/mixin.py @@ -844,6 +844,8 @@ class LicensePlateProcessingMixin: def lpr_process(self, obj_data: dict[str, any], frame: np.ndarray): """Look for license plates in image.""" + if not self.config.cameras[obj_data["camera"]].lpr.enabled: + return id = obj_data["id"] @@ -910,7 +912,10 @@ class LicensePlateProcessingMixin: # check that license plate is valid # double the value because we've doubled the size of the car - if license_plate_area < self.lpr_config.min_area * 2: + if ( + license_plate_area + < self.config.cameras[obj_data["camera"]].lpr.min_area * 2 + ): logger.debug("License plate is less than min_area") return @@ -942,7 +947,8 @@ class LicensePlateProcessingMixin: # check that license plate is valid if ( not license_plate_box - or area(license_plate_box) < self.lpr_config.min_area + or area(license_plate_box) + < self.config.cameras[obj_data["camera"]].lpr.min_area ): logger.debug(f"Invalid license plate box {license_plate}") return