Markers detection ================= ![Detected markers](../../img/detected_markers.png) Firstly, the ArUco detector needs to know the expected dictionary and size (in centimeter) of the markers it have to detect. Notice that extra parameters are passed to detector: see [OpenCV ArUco markers detection parameters documentation](https://docs.opencv.org/4.x/d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html) to know more. ``` python from argaze.ArUcoMarkers import ArUcoDetector, ArUcoCamera # Assuming camera calibration data are loaded # Loading extra detector parameters extra_parameters = ArUcoDetector.DetectorParameters.from_json('./detector_parameters.json') # Create ArUco detector to track DICT_APRILTAG_16h5 5cm length markers aruco_detector = ArUcoDetector.ArUcoDetector(camera=aruco_camera, dictionary='DICT_APRILTAG_16h5', marker_size=5, parameters=extra_parameters) ``` Here is detector parameters JSON file example: ``` { "cornerRefinementMethod": 1, "aprilTagQuadSigma": 2, "aprilTagDeglitch": 1 } ``` The ArUco detector processes frame to detect markers and allows to draw detection results onto it: ``` python # Detect markers into a frame and draw them aruco_detector.detect_markers(frame) aruco_detector.draw_detected_markers(frame) # Get corners position into frame related to each detected markers for marker_id, marker in aruco_detector.detected_markers.items(): print(f'marker {marker_id} corners: ', marker.corners) # Do something with detected marker i corners ... ```