-
Notifications
You must be signed in to change notification settings - Fork 998
Open
Description
ArUco and AprilTag detection both uses a clockwise orientation, however, AprilTag corners start with bottom right while ArUco starts with upper left. See the example below:
Code:
import cv2
def draw_markers_with_corners(img, corners):
for i, marker_corners in enumerate(corners):
# Get the corners of the marker
corner_points = marker_corners.reshape((4, 2))
corner_points = corner_points.astype(int)
# Draw each corner with its ordinal position
for j, corner in enumerate(corner_points):
# Draw corner point
cv2.circle(img, tuple(corner), 5, (0, 0, 255), -1)
# Label the corner with its ordinal position (0, 1, 2, 3)
cv2.putText(
img,
str(j),
(corner[0] + 10, corner[1] + 10),
cv2.FONT_HERSHEY_SIMPLEX,
0.5,
(255, 0, 0),
2,
)
return img
img = cv2.imread("markers.jpeg")
parameters = cv2.aruco.DetectorParameters()
april_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_APRILTAG_36h11)
april_detector = cv2.aruco.ArucoDetector(april_dict, parameters)
aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_250)
aruco_detector = cv2.aruco.ArucoDetector(aruco_dict, parameters)
img_marked = img.copy()
april_corners, _, _ = april_detector.detectMarkers(img)
img_marked = draw_markers_with_corners(img_marked, april_corners)
aruco_corners, _, _ = aruco_detector.detectMarkers(img)
img_marked = draw_markers_with_corners(img_marked, aruco_corners)
cv2.imwrite("markers_detected.jpeg", img_marked)The same issue persists (likely due to pre-defined dictionary configurations) for generation:
The generated AprilTag 36h11 - 0 (wrong orientation, see above)

The generated ArUco 4x4_250 - 0 (correct orientation, see above)

Code:
import cv2
april_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_APRILTAG_36h11)
aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_250)
img = cv2.aruco.generateImageMarker(aruco_dict, 0, 200, borderBits=1)
cv2.imwrite("aruco.png", img)
img = cv2.aruco.generateImageMarker(april_dict, 0, 200, borderBits=1)
cv2.imwrite("april.png", img)Metadata
Metadata
Assignees
Labels
No labels