Add optional original, annotated and JSON frame outputs

This commit is contained in:
zmv
2026-09-23 20:37:55 +08:00
parent d24de544cb
commit 713bfd3672
15 changed files with 241 additions and 86 deletions
+12
View File
@@ -32,6 +32,18 @@ Json serializeResult(FrameResult const& r) {
for(auto const& a:r.door_assignments)out["door_assignments"].push_back({{"track_id",a.track_id},{"person_index",a.person_index},{"door_zone",a.door_zone},{"raw_door_zone",a.raw_door_zone},{"front_probability",a.front_probability},{"smoothed_front_probability",a.smoothed_front_probability},{"confidence",a.confidence},{"evidence_source",a.evidence_source},{"pose_feature_count",a.pose_feature_count},{"history_frames",a.history_frames},{"features",a.features},{"feature_frontness",a.feature_frontness}});
for(auto const& entry:r.door_risks)out["door_risks"][entry.first]=riskJson(entry.second);
out["can"]={{"positions",r.can.positions},{"age_ms",r.can.age_ms},{"valid",r.can.valid},{"source",r.can.source},{"side",r.can.side}};
for(std::size_t i=0;i<r.persons.size();++i) {
auto const& p=r.persons[i];auto& skeleton=out["skeletons"][i];
skeleton["confidence"]=p.confidence;skeleton["keypoint_scores"]=Json::array();
skeleton["smoothed_keypoints"]=Json::array();skeleton["temporal_keypoints"]=Json::array();
for(std::size_t k=0;k<p.selected.size();++k) {
skeleton["keypoint_scores"].push_back(p.selected[k].score);
auto const& a=p.smoothed[k];auto const& b=p.temporal[k];
skeleton["smoothed_keypoints"].push_back({a.x,a.y,a.score});
skeleton["temporal_keypoints"].push_back({b.x,b.y,b.score});
}
}
out["timing"]={{"detector_ms",r.timing.detector_ms},{"pose_ms",r.timing.pose_ms},{"fusion_risk_ms",r.timing.fusion_risk_ms},{"capture_to_result_ms",r.timing.capture_to_result_ms}};
out["capture"]={{"sequence",r.capture.driver_sequence},{"capture_monotonic_ms",r.capture.capture_monotonic_ns*1e-6},{"driver_timestamp_ms",r.capture.driver_timestamp_ns*1e-6}};
out["capture_to_result_ms"]=rounded(r.timing.capture_to_result_ms,3);out["calibration_verified"]=r.door_mask_calibration_verified;return out;
}