轮廓编码先保留“原始尺度”的真实信息(mask/轮廓点/ROI),后续在“特征值”阶段按规则缩放生成 8×8×n 之类的编码;同时把轮廓内的真实图像 patch(最好带 alpha/mask)保存下来,才能做子存在递归提取,以及在实时显示时做多级还原/叠加。
下面给一套“能落地”的数据结构 + 流程(贴合你现在的“存在观测/点簇/实时显示”体系)。
1) 每个存在必须保存的“原始信息”
后续能力(子存在提取 + 多级还原)依赖 4 个最关键的原始量:
ROI(在父图坐标系下):
cv::Rect roi_root(建议同时存 root 坐标,少绕弯)轮廓/掩膜(原始分辨率):
std::vector<cv::Point> contour(用于几何、显示)cv::Mat mask(与 ROI 同尺寸,用于切图、alpha、编码、子提取)
轮廓内的真实图像 patch:
cv::Mat crop_bgr(ROI 裁剪原图)cv::Mat