在 CanMV K210 入门和综合项目中,AprilTag 视觉标签识别是一个很适合拆解的实验。它不是只验证摄像头能不能显示画面,而是把摄像头初始化、图像采集、标签检测、结果绘制、LCD 显示和串口输出串成一个完整流程。通过这个案例,可以理解机器视觉项目中“采集图像、分析图像、输出结果”的基本工作方式。
AprilTag 经常被口头称为二维码标签,但它和普通 QR 二维码的用途不同。普通二维码更偏向存储文本、链接或数据内容,AprilTag 更偏向视觉定位、机器人导航、目标标识和相机姿态参考。本实验不会读取普通二维码中的文字内容,而是识别 AprilTag 的标签家族、标签 ID、中心位置、矩形区域和旋转角度。
| 学习目标 | 说明 |
|---|---|
| 理解 AprilTag 识别 | 认识 AprilTag 与普通二维码的区别,理解标签 ID、标签家族和旋转角信息 |
| 掌握摄像头采集流程 | 使用sensor.reset()、sensor.snapshot()完成图像初始化与采集 |
| 掌握标签检测接口 | 使用img.find_apriltags()检测画面中的 AprilTag 标签 |
| 学会结果可视化 | 在图像上绘制矩形框、中心十字和文本信息,并通过 LCD 显示 |
| 建立视觉项目思路 | 为机器人定位、视觉导航、货架识别和自动对位实验打基础 |
本实验使用 CanMV K210 运行4.4_April_Tags.py。程序通过摄像头采集图像并调用 AprilTag 检测接口,识别标签 ID、标签家族和旋转角度,同时在画面中绘制红色矩形框、绿色中心十字和标签信息。串口会输出标签家族、标签 ID、旋转角度和当前帧率,便于观察代码结果和硬件现象之间的对应关系。
文章目录
- 理论基础
- 硬件设施
- 软件代码
- 扩展应用
- 总结
理论基础
AprilTag 是一种视觉基准标签。摄像头看到标签后,程序可以从图像中检测出标签边界、中心位置、标签 ID 和旋转信息。对于机器人、移动平台、自动对位设备和教学视觉项目来说,这类标签的价值不在于存储大量内容,而在于提供一个稳定、容易识别的视觉参照物。
本实验代码使用img.find_apriltags()完成标签检测。程序会先配置可识别的标签家族,例如TAG16H5、TAG25H7、TAG36H11和ARTOOLKIT,然后在每一帧图像中查找符合这些家族规则的标签。检测到标签后,程序可以读取tag.family()、tag.id()、tag.rect()、tag.cx()、tag.cy()和tag.rotation()等信息。
需要注意的是,本实验读取的是 AprilTag 的基础识别信息,包括标签家族、标签 ID、中心坐标、矩形区域和画面内旋转角度。严格意义上的三维位姿估计还需要相机标定参数、标签实际尺寸和空间坐标换算。本实验更适合作为 AprilTag 识别入门,用于理解标签检测和画面标记流程。