public void calibrate() { List <Mat> rvecs = new List <Mat>(); List <Mat> tvecs = new List <Mat>(); Mat reprojectionErrors = new Mat(); List <Mat> objectPoints = new List <Mat>(); objectPoints.Add(Mat.Zeros(mCornersSize, 1, CvType.Cv32fc3)); calcBoardCornerPositions(objectPoints[0]); for (int i = 1; i < mCornersBuffer.Count; i++) { objectPoints.Add(objectPoints[0]); } Calib3d.CalibrateCamera(objectPoints, mCornersBuffer, mImageSize, mCameraMatrix, mDistortionCoefficients, rvecs, tvecs, mFlags); mIsCalibrated = Core.CheckRange(mCameraMatrix) && Core.CheckRange(mDistortionCoefficients); mRms = computeReprojectionErrors(objectPoints, rvecs, tvecs, reprojectionErrors); Log.Info(TAG, String.Format("Average re-projection error: %f", mRms)); Log.Info(TAG, "Camera matrix: " + mCameraMatrix.Dump()); Log.Info(TAG, "Distortion coefficients: " + mDistortionCoefficients.Dump()); }