Zuhair
Build SORT MOT17 demo
426d46b
Raw
History Blame Contribute Delete
1.78 kB
from __future__ import annotations
from typing import Any
import cv2
import numpy as np
def _track_color(track_id: int) -> tuple[int, int, int]:
# Deterministic color by track id so the same id stays visually stable.
return (
128 + (37 * track_id) % 128,
128 + (17 * track_id + 85) % 128,
128 + (29 * track_id + 170) % 128,
)
def render_detections(frame, detections) -> Any:
"""
Render detections on a copied frame.
"""
rendered = np.copy(frame)
for detection in detections:
start_point = (int(detection.x1), int(detection.y1))
end_point = (int(detection.x2), int(detection.y2))
cv2.rectangle(rendered, start_point, end_point, (0, 255, 0), 2)
label = f"{detection.score:.2f}"
text_origin = (start_point[0], max(20, start_point[1] - 8))
cv2.putText(
rendered,
label,
text_origin,
cv2.FONT_HERSHEY_SIMPLEX,
0.5,
(0, 255, 0),
1,
cv2.LINE_AA,
)
return rendered
def render_tracks(frame, tracks) -> Any:
"""
Render tracks on a copied frame.
"""
rendered = np.copy(frame)
for track in tracks:
color = _track_color(track.track_id)
start_point = (int(track.x1), int(track.y1))
end_point = (int(track.x2), int(track.y2))
cv2.rectangle(rendered, start_point, end_point, color, 2)
label = f"ID {track.track_id}"
text_origin = (start_point[0], max(20, start_point[1] - 8))
cv2.putText(
rendered,
label,
text_origin,
cv2.FONT_HERSHEY_SIMPLEX,
0.6,
color,
2,
cv2.LINE_AA,
)
return rendered