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