Beispiel #1
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 #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]);
                }
            }
            /// <summary>
            /// <see cref="ArucoObjectTracker.Draw(int, Dictionary, HashSet{ArucoObject})"/>
            /// </summary>
            public override void Draw(int cameraId, Aruco.Dictionary dictionary)
            {
                if (!IsActivated || arucoTracker.MarkerTracker.DetectedMarkers[cameraId][dictionary] <= 0)
                {
                    return;
                }

                bool updatedCameraImage = false;

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

                foreach (var arucoGridBoard in arucoTracker.GetArucoObjects <ArucoGridBoard>(dictionary))
                {
                    if (arucoTracker.DrawAxes && cameraParameters != null && arucoGridBoard.MarkersUsedForEstimation > 0 && arucoGridBoard.Rvec != null)
                    {
                        Aruco.DrawAxis(cameraImages[cameraId], cameraParameters.CamerasMatrix[cameraId], cameraParameters.DistCoeffs[cameraId],
                                       arucoGridBoard.Rvec, arucoGridBoard.Tvec, arucoGridBoard.AxisLength);
                        updatedCameraImage = true;
                    }
                }

                if (updatedCameraImage)
                {
                    arucoTracker.ArucoCamera.Images = cameraImages;
                }
            }
Beispiel #4
0
 public override void Draw(int cameraId, Aruco.Dictionary dictionary, Cv.Mat image)
 {
     foreach (var arucoGridBoard in arucoTracker.GetArucoObjects <ArucoGridBoard>(dictionary))
     {
         if (arucoTracker.DrawAxes && cameraParameters != null && arucoGridBoard.Rvec != null)
         {
             Aruco.DrawAxis(image, cameraParameters.CameraMatrices[cameraId], cameraParameters.DistCoeffs[cameraId],
                            arucoGridBoard.Rvec, arucoGridBoard.Tvec, arucoGridBoard.AxisLength);
         }
     }
 }
    public override void Draw(int cameraId, Aruco.Dictionary dictionary, Cv.Mat image)
    {
      base.Draw(cameraId, dictionary, image);

      foreach (var arucoGridBoard in arucoTracker.GetArucoObjects<ArucoGridBoard>(dictionary))
      {
        if (arucoTracker.DrawAxes && arucoCameraUndistortion != null && arucoGridBoard.Rvec != null)
        {
          Aruco.DrawAxis(image, arucoCameraUndistortion.RectifiedCameraMatrices[cameraId], arucoCameraUndistortion.UndistortedDistCoeffs[cameraId],
            arucoGridBoard.Rvec, arucoGridBoard.Tvec, arucoGridBoard.AxisLength);
        }
      }
    }
Beispiel #6
0
            public override void Draw(int cameraId, Aruco.Dictionary dictionary, Cv.Mat image)
            {
                foreach (var arucoCharucoBoard in arucoTracker.GetArucoObjects <ArucoCharucoBoard>(dictionary))
                {
                    if (arucoCharucoBoard.DetectedIds.Size() > 0)
                    {
                        if (arucoTracker.DrawDetectedCharucoMarkers)
                        {
                            Aruco.DrawDetectedCornersCharuco(image, arucoCharucoBoard.DetectedCorners, arucoCharucoBoard.DetectedIds);
                        }

                        if (arucoTracker.DrawAxes && cameraParameters != null && arucoCharucoBoard.Rvec != null)
                        {
                            Aruco.DrawAxis(image, cameraParameters.CameraMatrices[cameraId], cameraParameters.DistCoeffs[cameraId],
                                           arucoCharucoBoard.Rvec, arucoCharucoBoard.Tvec, arucoCharucoBoard.AxisLength);
                        }
                    }
                }
            }
Beispiel #7
0
            public override void Draw(int cameraId, Aruco.Dictionary dictionary, Cv.Mat image)
            {
                if (DetectedDiamonds[cameraId][dictionary] > 0)
                {
                    // Draw detected diamonds
                    if (arucoTracker.DrawDetectedDiamonds)
                    {
                        Aruco.DrawDetectedDiamonds(image, DiamondCorners[cameraId][dictionary], DiamondIds[cameraId][dictionary]);
                    }

                    // Draw axes of detected diamonds
                    if (arucoTracker.DrawAxes && cameraParameters != null && DiamondRvecs[cameraId][dictionary] != null)
                    {
                        for (uint i = 0; i < DetectedDiamonds[cameraId][dictionary]; i++)
                        {
                            Aruco.DrawAxis(image, cameraParameters.CameraMatrices[cameraId], cameraParameters.DistCoeffs[cameraId],
                                           DiamondRvecs[cameraId][dictionary].At(i), DiamondTvecs[cameraId][dictionary].At(i), DrawAxisLength);
                        }
                    }
                }
            }
Beispiel #8
0
            /// <summary>
            /// <see cref="ArucoObjectTracker.Draw(int, Dictionary, HashSet{ArucoObject})"/>
            /// </summary>
            public override void Draw(int cameraId, Aruco.Dictionary dictionary)
            {
                if (!IsActivated)
                {
                    return;
                }

                bool updatedCameraImage = false;

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

                if (DetectedDiamonds[cameraId][dictionary] > 0)
                {
                    // Draw detected diamonds
                    if (arucoTracker.DrawDetectedDiamonds)
                    {
                        Aruco.DrawDetectedDiamonds(cameraImages[cameraId], DiamondCorners[cameraId][dictionary], DiamondIds[cameraId][dictionary]);
                        updatedCameraImage = true;
                    }

                    // Draw axes of detected diamonds
                    if (arucoTracker.DrawAxes && cameraParameters != null && DiamondRvecs[cameraId][dictionary] != null)
                    {
                        for (uint i = 0; i < DetectedDiamonds[cameraId][dictionary]; i++)
                        {
                            Aruco.DrawAxis(cameraImages[cameraId], cameraParameters.CamerasMatrix[cameraId], cameraParameters.DistCoeffs[cameraId],
                                           DiamondRvecs[cameraId][dictionary].At(i), DiamondTvecs[cameraId][dictionary].At(i), DRAW_AXIS_LENGTH);
                            updatedCameraImage = true;
                        }
                    }
                }

                if (updatedCameraImage)
                {
                    arucoTracker.ArucoCamera.Images = cameraImages;
                }
            }
            public override void Draw(int cameraId, Aruco.Dictionary dictionary, Cv.Mat image)
            {
                base.Draw(cameraId, dictionary, image);

                if (DetectedDiamonds[cameraId][dictionary] > 0)
                {
                    // Draw detected diamonds
                    if (arucoTracker.DrawDetectedDiamonds)
                    {
                        Aruco.DrawDetectedDiamonds(image, DiamondCorners[cameraId][dictionary], DiamondIds[cameraId][dictionary]);
                    }

                    // Draw axes of detected diamonds
                    if (arucoTracker.DrawAxes && arucoCameraUndistortion != null && DiamondRvecs[cameraId][dictionary] != null)
                    {
                        for (uint i = 0; i < DetectedDiamonds[cameraId][dictionary]; i++)
                        {
                            Aruco.DrawAxis(image, arucoCameraUndistortion.RectifiedCameraMatrices[cameraId], arucoCameraUndistortion.UndistortedDistCoeffs[cameraId],
                                           DiamondRvecs[cameraId][dictionary].At(i), DiamondTvecs[cameraId][dictionary].At(i), DrawAxisLength);
                        }
                    }
                }
            }