| 591 | } |
| 592 | |
| 593 | bool visualize(cv::Mat& frame, |
| 594 | const models::InferenceFrameResult& result, |
| 595 | const std::string& src_label, |
| 596 | const std::string& wheel_dir, |
| 597 | const cv::Mat& H_world_to_px) |
| 598 | { |
| 599 | if (frame.empty()) return false; |
| 600 | auto dv = debug_view_from(result, src_label, wheel_dir); |
| 601 | annotate_frame(frame, dv, H_world_to_px); |
| 602 | cv::namedWindow("VisionPilot", cv::WINDOW_NORMAL); |
| 603 | cv::resizeWindow("VisionPilot", frame.cols, frame.rows); |
| 604 | cv::imshow("VisionPilot", frame); |
| 605 | cv::waitKey(1); |
| 606 | return true; |
| 607 | } |
| 608 | |
| 609 | } // namespace visionpilot::debug |