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]); } }
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; } }
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); } } }
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); } } } }
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); } } } }
/// <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); } } } }