diff --git a/frigate/config/camera/detect.py b/frigate/config/camera/detect.py index 35c337bc8..71dbc3292 100644 --- a/frigate/config/camera/detect.py +++ b/frigate/config/camera/detect.py @@ -1,6 +1,6 @@ from typing import Optional -from pydantic import Field +from pydantic import Field, model_validator from ..base import FrigateBaseModel @@ -88,3 +88,11 @@ class DetectConfig(FrigateBaseModel): title="Annotation offset", description="Milliseconds to shift detect annotations to better align timeline bounding boxes with recordings; can be positive or negative.", ) + + @model_validator(mode="after") + def validate_dimensions(self) -> "DetectConfig": + if (self.width is None) != (self.height is None): + raise ValueError( + "detect -> both width and height must be specified together, or both omitted" + ) + return self diff --git a/frigate/test/test_config.py b/frigate/test/test_config.py index 132be131f..e82b688c6 100644 --- a/frigate/test/test_config.py +++ b/frigate/test/test_config.py @@ -1188,7 +1188,7 @@ class TestConfig(unittest.TestCase): def test_global_detect_merge(self): config = { "mqtt": {"host": "mqtt"}, - "detect": {"max_disappeared": 1, "height": 720}, + "detect": {"max_disappeared": 1, "height": 720, "width": 1280}, "cameras": { "back": { "ffmpeg": {