diff --git a/samples/cpp/tutorial_code/calib3d/camera_calibration/camera_calibration.cpp b/samples/cpp/tutorial_code/calib3d/camera_calibration/camera_calibration.cpp index a6f87f41e8..38961ec63e 100644 --- a/samples/cpp/tutorial_code/calib3d/camera_calibration/camera_calibration.cpp +++ b/samples/cpp/tutorial_code/calib3d/camera_calibration/camera_calibration.cpp @@ -391,7 +391,12 @@ int main(int argc, char* argv[]) { Mat temp = view.clone(); if (s.useFisheye) - cv::fisheye::undistortImage(temp, view, cameraMatrix, distCoeffs); + { + Mat newCamMat; + fisheye::estimateNewCameraMatrixForUndistortRectify(cameraMatrix, distCoeffs, imageSize, + Matx33d::eye(), newCamMat, 1); + cv::fisheye::undistortImage(temp, view, cameraMatrix, distCoeffs, newCamMat); + } else undistort(temp, view, cameraMatrix, distCoeffs); } @@ -519,7 +524,7 @@ static bool runCalibration( Settings& s, Size& imageSize, Mat& cameraMatrix, Mat { //! [fixed_aspect] cameraMatrix = Mat::eye(3, 3, CV_64F); - if( s.flag & CALIB_FIX_ASPECT_RATIO ) + if( !s.useFisheye && s.flag & CALIB_FIX_ASPECT_RATIO ) cameraMatrix.at(0,0) = s.aspectRatio; //! [fixed_aspect] if (s.useFisheye) { @@ -586,7 +591,7 @@ static void saveCameraParams( Settings& s, Size& imageSize, Mat& cameraMatrix, M fs << "board_height" << s.boardSize.height; fs << "square_size" << s.squareSize; - if( s.flag & CALIB_FIX_ASPECT_RATIO ) + if( !s.useFisheye && s.flag & CALIB_FIX_ASPECT_RATIO ) fs << "fix_aspect_ratio" << s.aspectRatio; if (s.flag)