From 6728c2bb90bb00553569f5ec01f40ad0d36de214 Mon Sep 17 00:00:00 2001 From: Accusys Date: Thu, 14 May 2026 15:24:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20trace=20debug=20=E2=80=94=20actual=20bb?= =?UTF-8?q?ox=20thickness=3D4,=20interpolated=20bbox=20thickness=3D1=20at?= =?UTF-8?q?=20first=20known=20position?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/media_api.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/api/media_api.rs b/src/api/media_api.rs index aec149c..b707958 100644 --- a/src/api/media_api.rs +++ b/src/api/media_api.rs @@ -404,13 +404,22 @@ async fn trace_video( y_pos -= 22; } - // Green thin bounding boxes with trace_id label for each face detection + // Bounding boxes: interpolated (thickness=1) + actual (thickness=4) with trace_id label for (tid, frames) in &sorted_traces { + let range_enable = format!("between(n,{},{})", frames[0] as i64 - frame_offset, frames[frames.len() - 1] as i64 - frame_offset); + // Interpolated bbox at first known position across the whole trace range + if let Some((x, y, w, h)) = bbox_per_frame.get(&(*tid, frames[0])) { + parts.push(format!( + "drawbox=x={}:y={}:w={}:h={}:color=green@0.3:thickness=1:enable='{}'", + x, y, w, h, range_enable + )); + } + // Actual detection bboxes with trace_id label for fn_ in frames.iter() { if let Some((x, y, w, h)) = bbox_per_frame.get(&(*tid, *fn_)) { let n = *fn_ as i64 - frame_offset; parts.push(format!( - "drawbox=x={}:y={}:w={}:h={}:color=green@0.5:thickness=1:enable='between(n,{},{})'", + "drawbox=x={}:y={}:w={}:h={}:color=green@0.5:thickness=4:enable='between(n,{},{})'", x, y, w, h, n, n )); parts.push(format!(