Markers detection ================= ![Detected markers](../../img/detected_markers.png) Firstly, the [ArUcoDetector](/argaze/#argaze.ArUcoMarkers.ArUcoDetector.ArUcoDetector) needs to know the expected dictionary and size (in centimeter) of the [ArUcoMarkers](/argaze/#argaze.ArUcoMarkers.ArUcoMarker) 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, ArUcoOpticCalibrator # 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(optic_parameters=optic_parameters, dictionary='DICT_APRILTAG_16h5', marker_size=5, parameters=extra_parameters) ``` Here is [DetectorParameters](/argaze/#argaze.ArUcoMarkers.ArUcoDetector.DetectorParameters) JSON file example: ``` { "cornerRefinementMethod": 1, "aprilTagQuadSigma": 2, "aprilTagDeglitch": 1 } ``` The [ArUcoDetector](/argaze/#argaze.ArUcoMarkers.ArUcoDetector.ArUcoDetector) 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 ... ```