通用目标点击跟踪

  1. 当 ROS 系统正常运行时,检查是否接收到新的 ROS 图像,重置 get_ros_img 标志,并将 ROS 图像克隆到本地图像变量 img

image.png

  1. 如果处于检测状态,创建一个 TargetsInFrame 实例,用于存储检测结果,并递增帧 ID,将图像调整到指定的宽度和高度,使用调整后的图像和选定区域,初始化跟踪矩形和跟踪器,在图像上执行通用目标检测,将检测目标显示在图像上面

image.png

  1. 创建一个检测的ROS 消息 ros_tgts,用于保存帧中的目标,并设置其元数据。

image.png

  1. 遍历检测到的目标,将每个目标的详细信息填充到 ROS 消息中,包括中心坐标、尺寸、置信度、类别、视线角度、跟踪 ID 和 3D 位置。

image.png

  1. 计算目标外接矩形框的四个顶点坐标 ,使用叉乘方法确定被点击的点是否在目标的外接矩形框内。如果是,则更新跟踪状态,初始化新的 ROI,并打印模式状态,发布检测结果到 ROS 主题

image.png

  1. 如果处于追踪状态,创建一个 TargetsInFrame 实例,用于存储检测结果,并递增帧 ID,将图像调整到指定的宽度和高度,如果有新的框选区域,则重新初始化跟踪器,开始追踪,显示追踪框

image.png

  1. 创建一个追踪的ROS 消息 TargetsInFrame 并填充相关元数据

image.png

  1. 如果有追踪目标,则创建 spirecv_msgs::Target 消息并填充和发布目标数据,包括中心坐标、宽度、高度、视线角、3D 位置等。