/// <summary>
            /// <see cref="ArucoObjectTracker.Draw(int, Dictionary)"/>
            /// </summary>
            public override void Draw(int cameraId, Aruco.Dictionary dictionary)
            {
                if (!IsActivated)
                {
                    return;
                }

                bool updatedCameraImage = false;

                Cv.Core.Mat[] cameraImages = arucoTracker.ArucoCamera.Images;

                // Draw the detected markers
                // TODO: draw only markers in ArucoObjects list + add option to draw all the detected markers
                if (arucoTracker.DrawDetectedMarkers && DetectedMarkers[cameraId][dictionary] > 0)
                {
                    Aruco.DrawDetectedMarkers(cameraImages[cameraId], MarkerCorners[cameraId][dictionary], MarkerIds[cameraId][dictionary]);
                    updatedCameraImage = true;
                }

                // Draw the rejected marker candidates
                if (arucoTracker.DrawRejectedCandidates && RejectedCandidateCorners[cameraId][dictionary].Size() > 0)
                {
                    Aruco.DrawDetectedMarkers(cameraImages[cameraId], RejectedCandidateCorners[cameraId][dictionary], REJECTED_MARKERS_CANDIDATES_COLOR);
                    updatedCameraImage = true;
                }

                if (updatedCameraImage)
                {
                    arucoTracker.ArucoCamera.Images = cameraImages;
                }
            }
Beispiel #2
0
            public override void Draw(int cameraId, Aruco.Dictionary dictionary, Cv.Mat image)
            {
                if (DetectedMarkers[cameraId][dictionary] > 0)
                {
                    // Draw all the detected markers
                    if (arucoTracker.DrawDetectedMarkers)
                    {
                        // TODO: draw only markers in ArucoObjects list + add option to draw all the detected markers
                        Aruco.DrawDetectedMarkers(image, MarkerCorners[cameraId][dictionary], MarkerIds[cameraId][dictionary]);
                    }

                    // Draw axes of detected tracked markers
                    if (arucoTracker.DrawAxes && cameraParameters != null && MarkerRvecs[cameraId][dictionary] != null)
                    {
                        for (uint i = 0; i < DetectedMarkers[cameraId][dictionary]; i++)
                        {
                            ArucoObject foundArucoObject;
                            int         detectedMarkerHashCode = ArucoMarker.GetArucoHashCode(MarkerIds[cameraId][dictionary].At(i));
                            if (arucoTracker.ArucoObjects[dictionary].TryGetValue(detectedMarkerHashCode, out foundArucoObject))
                            {
                                Aruco.DrawAxis(image, cameraParameters.CameraMatrices[cameraId], cameraParameters.DistCoeffs[cameraId],
                                               MarkerRvecs[cameraId][dictionary].At(i), MarkerTvecs[cameraId][dictionary].At(i), EstimatePoseMarkerLength);
                            }
                        }
                    }
                }

                // Draw the rejected marker candidates
                if (arucoTracker.DrawRejectedCandidates && RejectedCandidateCorners[cameraId][dictionary].Size() > 0)
                {
                    Aruco.DrawDetectedMarkers(image, RejectedCandidateCorners[cameraId][dictionary]);
                }
            }
Beispiel #3
0
        public override void Draw(int cameraId, Aruco.Dictionary dictionary, Cv.Mat image)
        {
            base.Draw(cameraId, dictionary, image);

            if (DetectedMarkers[cameraId][dictionary] > 0)
            {
                // Draw all the detected markers
                if (arucoTracker.DrawDetectedMarkers)
                {
                    Aruco.DrawDetectedMarkers(image, MarkerCorners[cameraId][dictionary], MarkerIds[cameraId][dictionary]);
                }

                // Draw axes of detected tracked markers
                if (arucoTracker.DrawAxes && arucoCameraUndistortion != null && MarkerRvecs[cameraId][dictionary] != null)
                {
                    for (uint i = 0; i < DetectedMarkers[cameraId][dictionary]; i++)
                    {
                        ArucoObject foundArucoObject;
                        int         detectedMarkerHashCode = ArucoMarker.GetArucoHashCode(MarkerIds[cameraId][dictionary].At(i));
                        if (arucoTracker.ArucoObjects[dictionary].TryGetValue(detectedMarkerHashCode, out foundArucoObject))
                        {
                            Aruco.DrawAxis(image, arucoCameraUndistortion.RectifiedCameraMatrices[cameraId], arucoCameraUndistortion.UndistortedDistCoeffs[cameraId],
                                           MarkerRvecs[cameraId][dictionary].At(i), MarkerTvecs[cameraId][dictionary].At(i), estimatePoseMarkerLength);
                        }
                    }
                }
            }

            // Draw the rejected marker candidates
            if (arucoTracker.DrawRejectedCandidates && RejectedCandidateCorners[cameraId][dictionary].Size() > 0)
            {
                Aruco.DrawDetectedMarkers(image, RejectedCandidateCorners[cameraId][dictionary]);
            }
        }
Beispiel #4
0
            public void Draw()
            {
                if (!IsConfigured)
                {
                    return;
                }

                bool updatedCameraImage = false;

                Cv.Core.Mat[] cameraImages = ArucoCamera.Images;

                for (int cameraId = 0; cameraId < ArucoCamera.CamerasNumber; cameraId++)
                {
                    if (MarkerIdsCurrentImage[cameraId] != null && MarkerIdsCurrentImage[cameraId].Size() > 0)
                    {
                        Aruco.DrawDetectedMarkers(cameraImages[cameraId], MarkerCornersCurrentImage[cameraId], MarkerIdsCurrentImage[cameraId]);
                        updatedCameraImage = true;
                    }
                }

                if (updatedCameraImage)
                {
                    ArucoCamera.Images = cameraImages;
                }
            }
Beispiel #5
0
            /// <summary>
            /// Draws the detected ArUco markers on the current images of the cameras.
            /// </summary>
            public virtual void DrawDetectedMarkers()
            {
                if (!IsConfigured)
                {
                    throw new Exception("Configure the calibration controller before drawing detected markers.");
                }

                for (int cameraId = 0; cameraId < ArucoCamera.CameraNumber; cameraId++)
                {
                    if (MarkerIdsCurrentImage[cameraId] != null && MarkerIdsCurrentImage[cameraId].Size() > 0)
                    {
                        Aruco.DrawDetectedMarkers(ArucoCamera.Images[cameraId], MarkerCornersCurrentImage[cameraId], MarkerIdsCurrentImage[cameraId]);
                    }
                }
            }
Beispiel #6
0
            /// <summary>
            /// Draw the detected ArUco markers on the current images of the cameras.
            /// </summary>
            public void Draw()
            {
                if (!IsConfigured)
                {
                    return;
                }

                for (int cameraId = 0; cameraId < ArucoCamera.CameraNumber; cameraId++)
                {
                    if (MarkerIdsCurrentImage[cameraId] != null && MarkerIdsCurrentImage[cameraId].Size() > 0)
                    {
                        Aruco.DrawDetectedMarkers(ArucoCamera.Images[cameraId], MarkerCornersCurrentImage[cameraId], MarkerIdsCurrentImage[cameraId]);
                    }
                }
            }