From ae797a5c7c911abd02cc1035b6ed1d2fe819450c Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Sat, 7 Dec 2024 22:06:41 -0600 Subject: [PATCH] backend config --- frigate/config/camera/zone.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/frigate/config/camera/zone.py b/frigate/config/camera/zone.py index 65b34a049..f2e92f3a8 100644 --- a/frigate/config/camera/zone.py +++ b/frigate/config/camera/zone.py @@ -16,6 +16,10 @@ class ZoneConfig(BaseModel): coordinates: Union[str, list[str]] = Field( title="Coordinates polygon for the defined zone." ) + distances: Optional[Union[str, list[str]]] = Field( + default_factory=list, + title="Real-world distances for the sides of quadrilateral for the defined zone.", + ) inertia: int = Field( default=3, title="Number of consecutive frames required for object to be considered present in the zone.", @@ -49,6 +53,24 @@ class ZoneConfig(BaseModel): return v + @field_validator("distances", mode="before") + @classmethod + def validate_distances(cls, v): + if v is None: + return None + + if isinstance(v, str): + distances = list(map(str, map(float, v.split(",")))) + elif isinstance(v, list): + distances = [str(float(val)) for val in v] + else: + raise ValueError("Invalid type for distances") + + if len(distances) != 4: + raise ValueError("distances must have exactly 4 values") + + return distances + def __init__(self, **config): super().__init__(**config)