检测器架构
CV 模块的核心是基于 YOLO11-OBB 的重构检测器。它采用分层架构设计,实现了高内聚低耦合。
YOLO-OBB 检测器
位于 src/cv/core/detectors/obb/,该组件被拆分为多个职责单一的模块。
1. 核心检测器 (detector.py)
类名: YOLOOBBDetector
这是对外的统一接口(Facade)。它负责: - 加载 YOLO 模型。 - 接收图像输入。 - 协调后处理器和可视化器。 - 返回标准化的结果字典。
2. 几何计算层 (geometry.py)
类名: GeometryUtils
纯数学计算库,不依赖业务逻辑。核心算法包括:
- OBB 角度计算: 基于长边方向和目标向量的点积,计算精确的旋转角度(解决 180° 模糊)。
- 真实中心修正 (Real Center): 根据几何关系,从检测框中心推导物体的物理中心。
3. 业务后处理 (post_processor.py)
类名: RobotPoseProcessor
处理特定的机器人业务逻辑:
- 筛选置信度最高的 Central 和 Head 目标。
- 只有当两者同时存在时,才进行姿态解算。
- 调用几何层计算最终的角度和向量。
4. 数据结构 (types.py)
使用 dataclass 定义强类型数据:
- OBBDetection: 单个目标的检测结果(角点、中心、置信度)。
- RobotPoseResult: 最终解算出的机器人姿态(包含角度、方向向量、可视化辅助点)。
5. 可视化 (visualizer.py)
类名: OBBVisualizer
负责将复杂的检测结果绘制在图像上: - 绘制旋转边界框。 - 绘制方向箭头和角度圆弧。 - 标注类别和置信度。