/// <summary> /// Detects the Aruco markers on the current images of the cameras and store the results in the <see cref="MarkerCornersCurrentImage"/> and /// <see cref="MarkerIdsCurrentImage"/> properties. /// </summary> public virtual void DetectMarkers() { if (!IsConfigured) { throw new Exception("Configure the calibration controller before detect markers."); } for (int cameraId = 0; cameraId < ArucoCamera.CameraNumber; cameraId++) { Std.VectorInt markerIds; Std.VectorVectorPoint2f markerCorners, rejectedCandidateCorners; Cv.Mat image = ArucoCamera.Images[cameraId]; Aruco.DetectMarkers(image, CalibrationBoard.Dictionary, out markerCorners, out markerIds, DetectorParameters, out rejectedCandidateCorners); MarkerCornersCurrentImage[cameraId] = markerCorners; MarkerIdsCurrentImage[cameraId] = markerIds; if (RefineMarkersDetection) { Aruco.RefineDetectedMarkers(image, CalibrationBoard.Board, MarkerCornersCurrentImage[cameraId], MarkerIdsCurrentImage[cameraId], rejectedCandidateCorners); } } }
public void Detect() { if (!IsConfigured) { return; } for (int cameraId = 0; cameraId < ArucoCamera.CamerasNumber; cameraId++) { Std.VectorInt markerIds; Std.VectorVectorPoint2f markerCorners, rejectedCandidateCorners; Cv.Core.Mat image = ArucoCamera.Images[cameraId]; Aruco.DetectMarkers(image, CalibrationBoard.Dictionary, out markerCorners, out markerIds, DetectorParameters, out rejectedCandidateCorners); MarkerCornersCurrentImage[cameraId] = markerCorners; MarkerIdsCurrentImage[cameraId] = markerIds; if (RefineMarkersDetection) { Aruco.RefineDetectedMarkers(image, CalibrationBoard.Board, MarkerCornersCurrentImage[cameraId], MarkerIdsCurrentImage[cameraId], rejectedCandidateCorners); } } }
public override void Detect(int cameraId, Aruco.Dictionary dictionary, Cv.Mat image) { Std.VectorVectorPoint2f markerCorners, rejectedCandidateCorners; Std.VectorInt markerIds; Aruco.DetectMarkers(image, dictionary, out markerCorners, out markerIds, arucoTracker.DetectorParameters, out rejectedCandidateCorners); DetectedMarkers[cameraId][dictionary] = (int)markerIds.Size(); MarkerCorners[cameraId][dictionary] = markerCorners; MarkerIds[cameraId][dictionary] = markerIds; RejectedCandidateCorners[cameraId][dictionary] = rejectedCandidateCorners; }
/// <summary> /// <see cref="ArucoObjectTracker.Detect(int, Dictionary)"/> /// </summary> public override void Detect(int cameraId, Aruco.Dictionary dictionary) { if (!IsActivated) { return; } Std.VectorVectorPoint2f markerCorners, rejectedCandidateCorners; Std.VectorInt markerIds; Aruco.DetectMarkers(arucoTracker.ArucoCamera.Images[cameraId], dictionary, out markerCorners, out markerIds, arucoTracker.DetectorParameters, out rejectedCandidateCorners); DetectedMarkers[cameraId][dictionary] = (int)markerIds.Size(); MarkerCorners[cameraId][dictionary] = markerCorners; MarkerIds[cameraId][dictionary] = markerIds; RejectedCandidateCorners[cameraId][dictionary] = rejectedCandidateCorners; }