예제 #1
0
            /// <summary>
            /// Initializes and configure the <see cref="CameraParametersController.CameraParameters"/>.
            /// </summary>
            /// <param name="calibrationFlags">The calibration flags that will be used in <see cref="Calibrate"/>.</param>
            protected virtual void InitializeCameraParameters(CameraCalibrationFlags calibrationFlags = null)
            {
                if (calibrationFlags != null && calibrationFlags.UseIntrinsicGuess)
                {
                    if (CameraParametersController.CameraParameters == null || CameraParametersController.CameraParameters.CameraMatrices == null)
                    {
                        throw new Exception("CalibrationFlags.UseIntrinsicGuess flag is set but CameraParameters is null or has no valid values. Set" +
                                            " CameraParametersFilename or deactivate this flag.");
                    }
                }
                else
                {
                    CameraParametersController.Initialize(ArucoCamera.CameraNumber);
                    for (int cameraId = 0; cameraId < ArucoCamera.CameraNumber; cameraId++)
                    {
                        CameraParametersController.CameraParameters.CameraMatrices[cameraId] = new Cv.Mat();
                        CameraParametersController.CameraParameters.DistCoeffs[cameraId]     = new Cv.Mat();
                        CameraParametersController.CameraParameters.OmnidirXis[cameraId]     = new Cv.Mat();
                    }
                }

                CameraParametersController.CameraParameters.CalibrationFlagsValue = (calibrationFlags != null) ? calibrationFlags.CalibrationFlagsValue : default(int);

                for (int cameraId = 0; cameraId < ArucoCamera.CameraNumber; cameraId++)
                {
                    CameraParametersController.CameraParameters.ImageHeights[cameraId] = calibrationImageSizes[cameraId].Height;
                    CameraParametersController.CameraParameters.ImageWidths[cameraId]  = calibrationImageSizes[cameraId].Width;
                }
            }
예제 #2
0
 internal static extern double cvCalibrateCamera2(
     Mat object_points,
     Mat image_points,
     Mat point_counts,
     Size image_size,
     Mat camera_matrix,
     Mat distortion_coeffs,
     Mat rotation_vectors,
     Mat translation_vectors,
     CameraCalibrationFlags flags,
     TermCriteria term_crit);
예제 #3
0
            // ArucoCameraCalibration methods

            protected override void InitializeCameraParameters(CameraCalibrationFlags calibrationFlags)
            {
                base.InitializeCameraParameters(CalibrationFlags);

                if (CalibrationFlags.FixAspectRatio)
                {
                    for (int cameraId = 0; cameraId < ArucoCamera.CameraNumber; cameraId++)
                    {
                        CameraParametersController.CameraParameters.CameraMatrices[cameraId] = new Cv.Mat(3, 3, Cv.Type.CV_64F, new double[9] {
                            CalibrationFlags.FixAspectRatioValue, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0
                        });
                    }
                    CameraParametersController.CameraParameters.FixAspectRatioValue = CalibrationFlags.FixAspectRatioValue;
                }
            }