Aruco Marker
Prerequisites
Create Marker
main.py
import cv2
d = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_50)
# some other dicts:
# cv2.aruco.DICT_4X4_50
# cv2.aruco.DICT_4X4_100
# cv2.aruco.DICT_4X4_250
# cv2.aruco.DICT_4X4_1000
img = cv2.aruco.drawMarker(d, 0, 1000)
# 0 -> marker-id valid 0 .. 49
# 1000 -> marker-size in pixels
cv2.imwrite('img.png', img)
Example Output:
Detect Marker
main.cpp
#include "opencv2/opencv.hpp"
#include "opencv2/aruco.hpp"
cv::Mat gray;
cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);
auto dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_4X4_50);
std::vector<std::vector<cv::Point2f>> id_corners;
std::vector<int> ids;
auto detectorParams = cv::aruco::DetectorParameters::create();
std::vector<std::vector<cv::Point2f>> rejected;
cv::aruco::detectMarkers(gray, dictionary, id_corners, ids, detectorParams, rejected);
for (int i = 0; i < ids.size(); i++) {
int id = ids[i];
auto corners = id_corners[i];
}