mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-23 16:48:23 +03:00
correctly handle global object masks in dispatcher
This commit is contained in:
parent
7d678de445
commit
32b5418ff1
@ -929,18 +929,26 @@ class Dispatcher:
|
|||||||
|
|
||||||
object_settings = self.config.cameras[camera_name].objects
|
object_settings = self.config.cameras[camera_name].objects
|
||||||
|
|
||||||
if mask_name not in object_settings.mask:
|
# Check if this is a global mask
|
||||||
|
mask_found = False
|
||||||
|
if mask_name in object_settings.mask:
|
||||||
|
mask = object_settings.mask[mask_name]
|
||||||
|
if mask:
|
||||||
|
mask.enabled = payload == "ON"
|
||||||
|
mask_found = True
|
||||||
|
|
||||||
|
# Check if this is a per-object filter mask
|
||||||
|
for object_name, filter_config in object_settings.filters.items():
|
||||||
|
if mask_name in filter_config.mask:
|
||||||
|
mask = filter_config.mask[mask_name]
|
||||||
|
if mask:
|
||||||
|
mask.enabled = payload == "ON"
|
||||||
|
mask_found = True
|
||||||
|
|
||||||
|
if not mask_found:
|
||||||
logger.error(f"Unknown object mask: {mask_name}")
|
logger.error(f"Unknown object mask: {mask_name}")
|
||||||
return
|
return
|
||||||
|
|
||||||
mask = object_settings.mask[mask_name]
|
|
||||||
|
|
||||||
if not mask:
|
|
||||||
logger.error(f"Object mask {mask_name} is None")
|
|
||||||
return
|
|
||||||
|
|
||||||
mask.enabled = payload == "ON"
|
|
||||||
|
|
||||||
# Recreate RuntimeFilterConfig for each object filter to update rasterized_mask
|
# Recreate RuntimeFilterConfig for each object filter to update rasterized_mask
|
||||||
for object_name, filter_config in object_settings.filters.items():
|
for object_name, filter_config in object_settings.filters.items():
|
||||||
# Merge global object masks with per-object filter masks
|
# Merge global object masks with per-object filter masks
|
||||||
@ -950,8 +958,8 @@ class Dispatcher:
|
|||||||
if object_settings.mask:
|
if object_settings.mask:
|
||||||
for global_mask_id, global_mask_config in object_settings.mask.items():
|
for global_mask_id, global_mask_config in object_settings.mask.items():
|
||||||
# Use a global prefix to avoid key collisions
|
# Use a global prefix to avoid key collisions
|
||||||
prefixed_id = f"global_{global_mask_id}"
|
global_mask_id_prefixed = f"global_{global_mask_id}"
|
||||||
merged_mask[prefixed_id] = global_mask_config
|
merged_mask[global_mask_id_prefixed] = global_mask_config
|
||||||
|
|
||||||
object_settings.filters[object_name] = RuntimeFilterConfig(
|
object_settings.filters[object_name] = RuntimeFilterConfig(
|
||||||
frame_shape=self.config.cameras[camera_name].frame_shape,
|
frame_shape=self.config.cameras[camera_name].frame_shape,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user