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