private void ApplyCalibrationToUnityCamera(Mat intrinsic, Mat rotation, Mat translation) { Mat rotationInverse = GetRotationMatrixFromRotationVector(rotation).t(); // transpose is same as inverse for rotation matrix Mat transFinal = (rotationInverse * -1) * translation; _mainCamera.projectionMatrix = LoadProjectionMatrix((float)intrinsic.get(0, 0) [0], (float)intrinsic.get(1, 1) [0], (float)intrinsic.get(0, 2) [0], (float)intrinsic.get(1, 2) [0]); ApplyTranslationAndRotationToCamera(transFinal, RotationConversion.RotationMatrixToEulerZXY(rotationInverse)); }
private void ApplyCalibrationToUnityCamera(CvMat intrinsic, CvMat rotation, CvMat translation) { CvMat rotationInverse = GetRotationMatrixFromRotationVector(rotation).Transpose(); // transpose is same as inverse for rotation matrix CvMat transFinal = (rotationInverse * -1) * translation.Transpose(); _mainCamera.projectionMatrix = LoadProjectionMatrix((float)intrinsic[0, 0], (float)intrinsic[1, 1], (float)intrinsic[0, 2], (float)intrinsic[1, 2]); ApplyTranslationAndRotationToCamera(transFinal, RotationConversion.RotationMatrixToEulerZXY(rotationInverse)); }
private void ApplyCalibrationToUnityCamera(IntrinsicCameraParameters intrinsic, ExtrinsicCameraParameters extrinsics) { Matrix <double> rotationInverse = flipZAxis(extrinsics.RotationVector.RotationMatrix).Transpose(); // transpose is same as inverse for rotation matrix Matrix <double> transFinal = (rotationInverse * -1) * extrinsics.TranslationVector; _mainCamera.projectionMatrix = LoadProjectionMatrix((float)intrinsic.IntrinsicMatrix[0, 0], (float)intrinsic.IntrinsicMatrix[1, 1], (float)intrinsic.IntrinsicMatrix[0, 2], (float)intrinsic.IntrinsicMatrix[1, 2]); ApplyTranslationAndRotationToCamera(transFinal, RotationConversion.RotationMatrixToEulerZXY(rotationInverse)); }