#pragma once #include "frame_result.hpp" #include namespace cms { class CameraPipeline; // Pure drawing from the immutable result. Never re-runs inference. cv::Mat renderResult(FrameResult const& result,CanSnapshot const* liveCan=nullptr,bool drawText=true); cv::Mat renderVisualization(FrameResult const& result,CanSnapshot const& liveCan); void renderCanOverlay(cv::Mat& image,CanSnapshot const& can); // Optional observer: closing the window returns without stopping the pipeline. void runLocalVisualization(CameraPipeline const& pipeline, bool keepFinalFrame = false); }