Create config for parsing object

This commit is contained in:
Nicolas Mowen 2024-10-26 11:57:07 -06:00
parent a8fefa2232
commit 0ad1cda0b0
2 changed files with 20 additions and 8 deletions

View File

@ -1,6 +1,6 @@
from typing import Any, Optional, Union from typing import Any, Optional, Union
from pydantic import Field, field_serializer from pydantic import Field, PrivateAttr, field_serializer
from ..base import FrigateBaseModel from ..base import FrigateBaseModel
@ -53,3 +53,20 @@ class ObjectConfig(FrigateBaseModel):
default_factory=dict, title="Object filters." default_factory=dict, title="Object filters."
) )
mask: Union[str, list[str]] = Field(default="", title="Object mask.") mask: Union[str, list[str]] = Field(default="", title="Object mask.")
_all_objects: list[str] = PrivateAttr()
@property
def all_objects(self) -> list[str]:
return self._all_objects
def parse_all_objects(self, cameras):
if "_all_objects" in self:
return
# get list of unique enabled labels for tracking
enabled_labels = set(self.track)
for camera in cameras.values():
enabled_labels.update(camera.objects.track)
self._all_objects = list(enabled_labels)

View File

@ -595,13 +595,8 @@ class FrigateConfig(FrigateBaseModel):
verify_autotrack_zones(camera_config) verify_autotrack_zones(camera_config)
verify_motion_and_detect(camera_config) verify_motion_and_detect(camera_config)
# get list of unique enabled labels for tracking self.objects.parse_all_objects(self.cameras)
enabled_labels = set(self.objects.track) self.model.create_colormap(sorted(self.objects.all_objects))
for camera in self.cameras.values():
enabled_labels.update(camera.objects.track)
self.model.create_colormap(sorted(enabled_labels))
self.model.check_and_load_plus_model(self.plus_api) self.model.check_and_load_plus_model(self.plus_api)
for key, detector in self.detectors.items(): for key, detector in self.detectors.items():