public override void EstimateTransforms(int cameraId, Aruco.Dictionary dictionary) { foreach (var arucoGridBoard in arucoTracker.GetArucoObjects <ArucoGridBoard>(dictionary)) { Cv.Vec3d rvec = null, tvec = null; int markersUsedForEstimation = 0; if (arucoTracker.MarkerTracker.DetectedMarkers[cameraId][dictionary] > 0 && cameraParameters != null) { markersUsedForEstimation = Aruco.EstimatePoseBoard(arucoTracker.MarkerTracker.MarkerCorners[cameraId][dictionary], arucoTracker.MarkerTracker.MarkerIds[cameraId][dictionary], arucoGridBoard.Board, cameraParameters.CameraMatrices[cameraId], cameraParameters.DistCoeffs[cameraId], out rvec, out tvec); } arucoGridBoard.Rvec = rvec; arucoGridBoard.Tvec = tvec; arucoGridBoard.MarkersUsedForEstimation = markersUsedForEstimation; } }
/// <summary> /// <see cref="ArucoObjectTracker.EstimateTranforms(int, Dictionary, HashSet{ArucoObject})"/> /// </summary> public override void EstimateTranforms(int cameraId, Aruco.Dictionary dictionary) { if (!IsActivated || arucoTracker.MarkerTracker.DetectedMarkers[cameraId][dictionary] <= 0) { return; } CameraParameters cameraParameters = arucoTracker.ArucoCamera.CameraParameters; foreach (var arucoGridBoard in arucoTracker.GetArucoObjects <ArucoGridBoard>(dictionary)) { Cv.Core.Vec3d rvec = null, tvec = null; arucoGridBoard.MarkersUsedForEstimation = Aruco.EstimatePoseBoard(arucoTracker.MarkerTracker.MarkerCorners[cameraId][dictionary], arucoTracker.MarkerTracker.MarkerIds[cameraId][dictionary], arucoGridBoard.Board, cameraParameters.CamerasMatrix[cameraId], cameraParameters.DistCoeffs[cameraId], out rvec, out tvec); arucoGridBoard.Rvec = rvec; arucoGridBoard.Tvec = tvec; } }