mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-05 02:35:22 +03:00
switch timeline events to x,y,w,h
This commit is contained in:
parent
ce7f908fbb
commit
edd80bb81c
@ -12,6 +12,8 @@ from frigate.models import Timeline
|
|||||||
from multiprocessing.queues import Queue
|
from multiprocessing.queues import Queue
|
||||||
from multiprocessing.synchronize import Event as MpEvent
|
from multiprocessing.synchronize import Event as MpEvent
|
||||||
|
|
||||||
|
from frigate.util import to_relative_box
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@ -64,77 +66,36 @@ class TimelineProcessor(threading.Thread):
|
|||||||
"""Handle object detection."""
|
"""Handle object detection."""
|
||||||
camera_config = self.config.cameras[camera]
|
camera_config = self.config.cameras[camera]
|
||||||
|
|
||||||
if event_type == "start":
|
timeline_entry = {
|
||||||
Timeline.insert(
|
Timeline.timestamp: event_data["frame_time"],
|
||||||
timestamp=event_data["frame_time"],
|
Timeline.camera: camera,
|
||||||
camera=camera,
|
Timeline.source: "tracked_object",
|
||||||
source="tracked_object",
|
Timeline.source_id: event_data["id"],
|
||||||
source_id=event_data["id"],
|
Timeline.data: {
|
||||||
class_type="visible",
|
"box": to_relative_box(
|
||||||
data={
|
camera_config.detect.width,
|
||||||
"box": [
|
camera_config.detect.height,
|
||||||
event_data["box"][0] / camera_config.detect.width,
|
event_data["box"],
|
||||||
event_data["box"][1] / camera_config.detect.height,
|
),
|
||||||
event_data["box"][2] / camera_config.detect.width,
|
|
||||||
event_data["box"][3] / camera_config.detect.height,
|
|
||||||
],
|
|
||||||
"label": event_data["label"],
|
"label": event_data["label"],
|
||||||
"region": [
|
"region": to_relative_box(
|
||||||
event_data["region"][0] / camera_config.detect.width,
|
camera_config.detect.width,
|
||||||
event_data["region"][1] / camera_config.detect.height,
|
camera_config.detect.height,
|
||||||
event_data["region"][2] / camera_config.detect.width,
|
event_data["region"],
|
||||||
event_data["region"][3] / camera_config.detect.height,
|
),
|
||||||
],
|
|
||||||
},
|
},
|
||||||
).execute()
|
}
|
||||||
|
if event_type == "start":
|
||||||
|
timeline_entry[Timeline.class_type] = "visible"
|
||||||
|
Timeline.insert(timeline_entry).execute()
|
||||||
elif (
|
elif (
|
||||||
event_type == "update"
|
event_type == "update"
|
||||||
and prev_event_data["current_zones"] != event_data["current_zones"]
|
and prev_event_data["current_zones"] != event_data["current_zones"]
|
||||||
and len(event_data["current_zones"]) > 0
|
and len(event_data["current_zones"]) > 0
|
||||||
):
|
):
|
||||||
Timeline.insert(
|
timeline_entry[Timeline.class_type] = "entered_zone"
|
||||||
timestamp=event_data["frame_time"],
|
timeline_entry[Timeline.data]["zones"] = event_data["current_zones"]
|
||||||
camera=camera,
|
Timeline.insert(timeline_entry).execute()
|
||||||
source="tracked_object",
|
|
||||||
source_id=event_data["id"],
|
|
||||||
class_type="entered_zone",
|
|
||||||
data={
|
|
||||||
"box": [
|
|
||||||
event_data["box"][0] / camera_config.detect.width,
|
|
||||||
event_data["box"][1] / camera_config.detect.height,
|
|
||||||
event_data["box"][2] / camera_config.detect.width,
|
|
||||||
event_data["box"][3] / camera_config.detect.height,
|
|
||||||
],
|
|
||||||
"label": event_data["label"],
|
|
||||||
"region": [
|
|
||||||
event_data["region"][0] / camera_config.detect.width,
|
|
||||||
event_data["region"][1] / camera_config.detect.height,
|
|
||||||
event_data["region"][2] / camera_config.detect.width,
|
|
||||||
event_data["region"][3] / camera_config.detect.height,
|
|
||||||
],
|
|
||||||
"zones": event_data["current_zones"],
|
|
||||||
},
|
|
||||||
).execute()
|
|
||||||
elif event_type == "end":
|
elif event_type == "end":
|
||||||
Timeline.insert(
|
timeline_entry[Timeline.class_type] = "gone"
|
||||||
timestamp=event_data["frame_time"],
|
Timeline.insert(timeline_entry).execute()
|
||||||
camera=camera,
|
|
||||||
source="tracked_object",
|
|
||||||
source_id=event_data["id"],
|
|
||||||
class_type="gone",
|
|
||||||
data={
|
|
||||||
"box": [
|
|
||||||
event_data["box"][0] / camera_config.detect.width,
|
|
||||||
event_data["box"][1] / camera_config.detect.height,
|
|
||||||
event_data["box"][2] / camera_config.detect.width,
|
|
||||||
event_data["box"][3] / camera_config.detect.height,
|
|
||||||
],
|
|
||||||
"label": event_data["label"],
|
|
||||||
"region": [
|
|
||||||
event_data["region"][0] / camera_config.detect.width,
|
|
||||||
event_data["region"][1] / camera_config.detect.height,
|
|
||||||
event_data["region"][2] / camera_config.detect.width,
|
|
||||||
event_data["region"][3] / camera_config.detect.height,
|
|
||||||
],
|
|
||||||
},
|
|
||||||
).execute()
|
|
||||||
|
|||||||
@ -711,8 +711,12 @@ export default function Events({ path, ...props }) {
|
|||||||
style={{
|
style={{
|
||||||
left: `${Math.round(eventOverlay.data.box[0] * 100)}%`,
|
left: `${Math.round(eventOverlay.data.box[0] * 100)}%`,
|
||||||
top: `${Math.round(eventOverlay.data.box[1] * 100)}%`,
|
top: `${Math.round(eventOverlay.data.box[1] * 100)}%`,
|
||||||
right: `${Math.round((1 - eventOverlay.data.box[2]) * 100)}%`,
|
right: `${Math.round(
|
||||||
bottom: `${Math.round((1 - eventOverlay.data.box[3]) * 100)}%`,
|
(1 - eventOverlay.data.box[2] - eventOverlay.data.box[0]) * 100
|
||||||
|
)}%`,
|
||||||
|
bottom: `${Math.round(
|
||||||
|
(1 - eventOverlay.data.box[3] - eventOverlay.data.box[1]) * 100
|
||||||
|
)}%`,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{eventOverlay.class_type == 'entered_zone' ? (
|
{eventOverlay.class_type == 'entered_zone' ? (
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user