-
Notifications
You must be signed in to change notification settings - Fork 0
/
aruco.py
36 lines (31 loc) · 1.21 KB
/
aruco.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import cv2
from typing import List, Tuple
class Aruco:
'''OpenCV ArUco markers class.'''
def __init__(self, corners: List[Tuple[float, float]], rotation: float, translation: float, dictionary: cv2.aruco_Dictionary, id: int) -> None:
# List of coordinates (x, y) of the aruco marker
self.corners = corners
# Aruco rotation vector
self.rotation = rotation
# Aruco translation vector
self.translation = translation
# Dictionary of Arcuo (ej:cv2.aruco.DICT_4X4_50)
self.dictionary = dictionary
# Aruco id (ej: 0, 1, 2...)
self._id = id
@property
def id(self) -> int:
return self._id
@id.setter
def id(self, int) -> None:
self._id = int
def center(self) -> Tuple[int,int]:
""" Returns the estimation of the center of aruco. Args:
* `aruco_corners`: List of Aruco's corners
"""
x_coords = [corner[0] for corner in self.corners]
y_coords = [corner[1] for corner in self.corners]
# Center as diference between max and min value
x_center = (max(x_coords)+min(x_coords))/2
y_center = (max(y_coords)+min(y_coords))/2
return [x_center, y_center]