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].