Example #1
0
        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());
        }