From 5aa00b8fb9568dde34d729cd82c559d2553f898b Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Sun, 8 Mar 2026 16:34:39 -0500 Subject: [PATCH] publish the detected plate's box coordinates in tracked_object_update --- .../common/license_plate/mixin.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/frigate/data_processing/common/license_plate/mixin.py b/frigate/data_processing/common/license_plate/mixin.py index c184b8b75..e4fbd1172 100644 --- a/frigate/data_processing/common/license_plate/mixin.py +++ b/frigate/data_processing/common/license_plate/mixin.py @@ -1225,6 +1225,8 @@ class LicensePlateProcessingMixin: logger.debug(f"{camera}: License plate area below minimum threshold.") return + plate_box = license_plate + license_plate_frame = rgb[ license_plate[1] : license_plate[3], license_plate[0] : license_plate[2], @@ -1341,6 +1343,20 @@ class LicensePlateProcessingMixin: logger.debug(f"{camera}: License plate is less than min_area") return + # Scale back to original car coordinates and then to frame + plate_box_in_car = ( + license_plate[0] // 2, + license_plate[1] // 2, + license_plate[2] // 2, + license_plate[3] // 2, + ) + plate_box = ( + left + plate_box_in_car[0], + top + plate_box_in_car[1], + left + plate_box_in_car[2], + top + plate_box_in_car[3], + ) + license_plate_frame = car[ license_plate[1] : license_plate[3], license_plate[0] : license_plate[2], @@ -1404,6 +1420,8 @@ class LicensePlateProcessingMixin: 0, [license_plate_frame.shape[1], license_plate_frame.shape[0]] * 2 ) + plate_box = tuple(int(x) for x in expanded_box) + # Crop using the expanded box license_plate_frame = license_plate_frame[ int(expanded_box[1]) : int(expanded_box[3]), @@ -1611,6 +1629,7 @@ class LicensePlateProcessingMixin: "id": id, "camera": camera, "timestamp": start, + "plate_box": plate_box, } ), )