class AprilTag – объект AprilTag

Объект apriltag – это attrtuple, возвращаемый Image.find_apriltags(). Каждый экземпляр описывает декодированный AprilTag: его ограничивающую рамку, субпиксельный центроид, семейство/идентификатор, метрики качества декодера, четыре обнаруженных угла и – когда в 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

4-кортеж целочисленных кортежей (x, y) для четырёх обнаруженных углов метки, отсортированных по часовой стрелке начиная с верхнего левого угла. Индекс [21].

area

Площадь ограничивающей рамки (w * h). Целое число. Индекс [22].

rect

4-кортеж (x, y, w, h) ограничивающей рамки. Подходит для непосредственной передачи методам рисования/обрезки, таким как Image.draw_rectangle() или Image.crop(). Индекс [23].

Идентификация

id

Числовой идентификатор метки внутри её семейства. Допустимый диапазон зависит от семейства (например, 0 – 586 для TAG36H11). Целое число. Индекс [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].

Оценка положения

Поля трансляции и вращения ниже заполняются только когда Image.find_apriltags() вызывается с внутренними параметрами камеры fx, fy, cx и cy. Без внутренних параметров они равны 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_rotation и y_rotation. Число с плавающей точкой. Индекс [20].

rotation

Вращение метки в плоскости изображения в радианах. Равно z_rotation. Число с плавающей точкой. Индекс [11].