Fix LPR vehicle message for multiple models (#24119)

* use the camera's model for the lpr vehicle check

`FrigateConfig.model` became `models[]` in the detector refactor, so this didn't compile on 0.19. Each camera has its own detector/model pair now, so the check resolves the camera's scene with `getModelForCamera` instead of looking at every model.

* use camera config model

* fix export test
This commit is contained in:
Josh Hawkins 2026-08-28 12:26:05 -05:00 committed by GitHub
parent e99eb77ca1
commit 5de5cee3c6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 7 additions and 8 deletions

View File

@ -63,7 +63,7 @@ class CameraState:
self.lpr_min_obj_area: int = 0
self.lp_objects = {
label
for label, attributes in config.model.attributes_map.items()
for label, attributes in self.model.attributes_map.items()
if "license_plate" in attributes
}

View File

@ -1530,7 +1530,7 @@ class TestHttpExport(BaseTestHttp):
)
with tempfile.TemporaryDirectory() as tmpdir:
video_path = os.path.join(tmpdir, "multibyte_export.mp4")
video_path = os.path.join(tmpdir, "現場カメラ.mp4")
with open(video_path, "wb") as handle:
handle.write(b"video")

View File

@ -1,3 +1,4 @@
import { getModelForCamera } from "@/utils/modelUtil";
import type { SectionConfigOverrides } from "./types";
const lpr: SectionConfigOverrides = {
@ -21,12 +22,10 @@ const lpr: SectionConfigOverrides = {
if (ctx.level !== "camera" || !ctx.fullCameraConfig) return false;
if (ctx.fullCameraConfig.type === "lpr") return false;
const tracked = ctx.fullCameraConfig.objects?.track ?? [];
const vehicles = Object.entries(
ctx.fullConfig.model?.attributes_map ?? {},
)
.filter(([, attributes]) => attributes.includes("license_plate"))
.map(([label]) => label);
return !tracked.some((o) => vehicles.includes(o));
const model = getModelForCamera(ctx.fullConfig, ctx.cameraName);
return !tracked.some((o) =>
model?.attributes_map?.[o]?.includes("license_plate"),
);
},
},
],