예제 #1
0
            /// <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);
                    }
                }
            }
예제 #2
0
            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);
                    }
                }
            }
예제 #3
0
            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;
            }
예제 #4
0
            /// <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;
            }