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));
    }
예제 #2
0
    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));
    }
예제 #3
0
    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));
    }