class AprilTag -- AprilTag 对象

apriltag 对象是由 Image.find_apriltags() 返回的 attrtuple。每个实例描述一个已解码的 AprilTag:其边界框、亚像素质心、家族/id、解码器质量度量、四个检测到的角点,以及——当向 Image.find_apriltags() 提供内参时——在摄像头坐标系下的 6 自由度位姿估计。

字段可通过属性名(tag.id)或索引(tag[0])访问。该对象没有公共构造函数。

class image.apriltag

请调用 Image.find_apriltags() 来创建该对象。

边界框与角点

x

边界框左上角 x 坐标,以像素为单位。整数。索引 [0]

y

边界框左上角 y 坐标,以像素为单位。整数。索引 [1]

w

边界框宽度,以像素为单位。整数。索引 [2]

h

边界框高度,以像素为单位。整数。索引 [3]

cx

质心 x 坐标,四舍五入为整数。整数。索引 [4]

cy

质心 y 坐标,四舍五入为整数。整数。索引 [5]

cxf

质心 x 坐标,为亚像素浮点数。索引 [9]

cyf

质心 y 坐标,为亚像素浮点数。索引 [10]

corners

标签四个检测到的角点的 (x, y) 整数元组组成的 4 元组,从左上角开始按顺时针排序。索引 [21]

area

边界框的面积(w * h)。整数。索引 [22]

rect

边界框的 (x, y, w, h) 4 元组。适合直接传给诸如 Image.draw_rectangle()Image.crop() 之类的绘制/裁剪方法。索引 [23]

标识

id

标签在其家族内的数字 id。有效范围取决于家族(例如 TAG36H11 为 0 到 586)。整数。索引 [6]

family

数字家族标识符,为以下之一:

整数。索引 [7]

name

家族名称字符串,例如 "TAG36H11"。索引 [8]

匹配质量

decision_margin

标签匹配的质量,范围为 0.0 到 1.0,其中 1.0 最佳。可用它来剔除低置信度的检测结果。浮点数。索引 [12]

hamming

解码器为此标签接受的位错误数量。受家族的纠错能力限制:

  • TAG16H5 -> 最多 0 个位错误

  • TAG25H9 -> 最多 3 个位错误

  • TAG36H10 -> 最多 3 个位错误

  • TAG36H11 -> 最多 4 个位错误

越低越好。整数。索引 [13]

goodness

标签的图像质量,范围为 0.0 到 1.0,其中 1.0 最佳。在已发布的固件中目前始终为 0.0(底层解码器不再计算此度量)。浮点数。索引 [14]

位姿估计

下面的平移和旋转字段仅在以 fxfycxcy 摄像头内参调用 Image.find_apriltags() 时才会被填充。没有内参时它们为 0.0。标签被假定为 1 个单位宽,因此平移以“标签宽度”为单位——乘以真实世界的标签尺寸即可得到以米制为单位的距离。

x_translation

相对摄像头的 X 平移(左右),以标签宽度为单位。浮点数。索引 [15]

y_translation

相对摄像头的 Y 平移(上下),以标签宽度为单位。浮点数。索引 [16]

z_translation

相对摄像头的 Z 平移(前后),以标签宽度为单位。浮点数。索引 [17]

x_rotation

绕 X 轴的旋转(俯仰),以弧度为单位。浮点数。索引 [18]

y_rotation

绕 Y 轴的旋转(偏航),以弧度为单位。浮点数。索引 [19]

z_rotation

绕 Z 轴的旋转(翻滚),以弧度为单位。与 rotation 值相同——为与 x_rotationy_rotation 对称而重复。浮点数。索引 [20]

rotation

标签在图像平面内的旋转,以弧度为单位。等于 z_rotation。浮点数。索引 [11]