mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-10 10:33:11 +03:00
Imporove attributes handling (#22035)
Some checks failed
CI / AMD64 Build (push) Has been cancelled
CI / ARM Build (push) Has been cancelled
CI / Jetson Jetpack 6 (push) Has been cancelled
CI / AMD64 Extra Build (push) Has been cancelled
CI / ARM Extra Build (push) Has been cancelled
CI / Synaptics Build (push) Has been cancelled
CI / Assemble and push default build (push) Has been cancelled
Some checks failed
CI / AMD64 Build (push) Has been cancelled
CI / ARM Build (push) Has been cancelled
CI / Jetson Jetpack 6 (push) Has been cancelled
CI / AMD64 Extra Build (push) Has been cancelled
CI / ARM Extra Build (push) Has been cancelled
CI / Synaptics Build (push) Has been cancelled
CI / Assemble and push default build (push) Has been cancelled
* Revert "Fix saving attributes for object to DB (#22000)"
This reverts commit 73c1e12faf.
* Automatically handle attributes by obj data parsing
This commit is contained in:
parent
3101d5f27b
commit
ef5608a970
@ -33,7 +33,6 @@ from frigate.config.camera.updater import (
|
|||||||
CameraConfigUpdateEnum,
|
CameraConfigUpdateEnum,
|
||||||
CameraConfigUpdateSubscriber,
|
CameraConfigUpdateSubscriber,
|
||||||
)
|
)
|
||||||
from frigate.config.classification import ObjectClassificationType
|
|
||||||
from frigate.const import (
|
from frigate.const import (
|
||||||
FAST_QUEUE_TIMEOUT,
|
FAST_QUEUE_TIMEOUT,
|
||||||
UPDATE_CAMERA_ACTIVITY,
|
UPDATE_CAMERA_ACTIVITY,
|
||||||
@ -760,16 +759,8 @@ class TrackedObjectProcessor(threading.Thread):
|
|||||||
|
|
||||||
self.update_mqtt_motion(camera, frame_time, motion_boxes)
|
self.update_mqtt_motion(camera, frame_time, motion_boxes)
|
||||||
|
|
||||||
attribute_model_names = [
|
|
||||||
name
|
|
||||||
for name, model_config in self.config.classification.custom.items()
|
|
||||||
if model_config.object_config
|
|
||||||
and model_config.object_config.classification_type
|
|
||||||
== ObjectClassificationType.attribute
|
|
||||||
]
|
|
||||||
tracked_objects = [
|
tracked_objects = [
|
||||||
o.to_dict(attribute_model_names=attribute_model_names)
|
o.to_dict() for o in camera_state.tracked_objects.values()
|
||||||
for o in camera_state.tracked_objects.values()
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# publish info on this frame
|
# publish info on this frame
|
||||||
|
|||||||
@ -376,11 +376,15 @@ class TrackedObject:
|
|||||||
)
|
)
|
||||||
return (thumb_update, significant_change, path_update, autotracker_update)
|
return (thumb_update, significant_change, path_update, autotracker_update)
|
||||||
|
|
||||||
def to_dict(
|
def to_dict(self) -> dict[str, Any]:
|
||||||
self,
|
# Tracking internals excluded from output (centroid, estimate, estimate_velocity)
|
||||||
attribute_model_names: list[str] | None = None,
|
_EXCLUDED_OBJ_DATA_KEYS = {
|
||||||
) -> dict[str, Any]:
|
"centroid",
|
||||||
event = {
|
"estimate",
|
||||||
|
"estimate_velocity",
|
||||||
|
}
|
||||||
|
|
||||||
|
event: dict[str, Any] = {
|
||||||
"id": self.obj_data["id"],
|
"id": self.obj_data["id"],
|
||||||
"camera": self.camera_config.name,
|
"camera": self.camera_config.name,
|
||||||
"frame_time": self.obj_data["frame_time"],
|
"frame_time": self.obj_data["frame_time"],
|
||||||
@ -414,11 +418,11 @@ class TrackedObject:
|
|||||||
"path_data": self.path_data.copy(),
|
"path_data": self.path_data.copy(),
|
||||||
"recognized_license_plate": self.obj_data.get("recognized_license_plate"),
|
"recognized_license_plate": self.obj_data.get("recognized_license_plate"),
|
||||||
}
|
}
|
||||||
if attribute_model_names is not None:
|
|
||||||
for name in attribute_model_names:
|
# Add any other obj_data keys (e.g. custom attribute fields) not yet included
|
||||||
value = self.obj_data.get(name)
|
for key, value in self.obj_data.items():
|
||||||
if value is not None:
|
if key not in _EXCLUDED_OBJ_DATA_KEYS and key not in event:
|
||||||
event[name] = value
|
event[key] = value
|
||||||
|
|
||||||
return event
|
return event
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user