/// <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; } }
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);
// 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; } }