基准标记的基本读取方法
学习使用 Python 和 OpenCV 读取信任标记,如 ArUco 标记和 AprilTags 的基础知识。
读取和检测标识标记(如 ArUco 标记和 AprilTags)涉及多个步骤。以下是整个流程的概述:
- 相机标定(可选但推荐)
- 捕获图像或视频帧
- 预处理
- 标记检测
- 姿态估计(可选)
- 后处理(可选)
- 可视化(AR 应用必需,其他情况可选)
标记检测流程
下面对检测过程中的每个步骤进行简要说明。
相机标定
此步骤旨在校准相机,获取其内参并校正镜头畸变。虽然该步骤为可选,但强烈建议执行,因为它能显著提升标识标记的检测精度以及姿态估计的准确性。
捕获图像或视频帧
在此步骤中,需要从相机或其他数据源获取图像或视频帧。对于实时应用,可能需要使用网络摄像头或其他视频输入设备。
预处理
将获取的图像或视频帧转换为灰度图,因为许多标记检测算法基于灰度图像工作。在某些情况下,还需进一步应用预处理技术,例如高斯模糊,以降低噪声并提高检测准确率。
标记检测
使用 OpenCV 的 aruco 模块来检测 ArUco 标记和 AprilTags。随后,选择合适的 ArUco 字典,并设置检测参数。最后,调用 aruco.detectMarkers() 函数,在灰度图像中检测标记。
姿态估计
若需估计检测到的标记相对于相机的位置和方向,可以使用 aruco.estimatePoseSingleMarkers() 函数,结合检测到的标记、相机矩阵以及相机标定所得的畸变系数。
后处理
在完成标记检测和姿态估计后,可进行额外的后处理操作,例如计算标记之间的距离、估算物体尺寸,或实现标记的持续跟踪。
可视化
最后,可在原始图像或视频帧上绘制出检测到的标记及其姿态估计信息。这一步有助于直观展示结果并验证检测的准确性。对于增强现实(AR)应用而言,此步骤是必须的,因为它用于将合成图像叠加到捕获的画面之上。