diff --git a/modules/calib3d/test/test_undistort_points.cpp b/modules/calib3d/test/test_undistort_points.cpp index 9b12dd9da4..8765e2c5eb 100644 --- a/modules/calib3d/test/test_undistort_points.cpp +++ b/modules/calib3d/test/test_undistort_points.cpp @@ -119,4 +119,30 @@ TEST(Calib3d_Undistort, stop_criteria) ASSERT_LE(obtainedError, maxError); } +TEST(undistortPoints, regression_14583) +{ + const int col = 720; + // const int row = 540; + float camera_matrix_value[] = { + 437.8995f, 0.0f, 342.9241f, + 0.0f, 438.8216f, 273.7163f, + 0.0f, 0.0f, 1.0f + }; + cv::Mat camera_interior(3, 3, CV_32F, camera_matrix_value); + + float camera_distort_value[] = {-0.34329f, 0.11431f, 0.0f, 0.0f, -0.017375f}; + cv::Mat camera_distort(1, 5, CV_32F, camera_distort_value); + + float distort_points_value[] = {col, 0.}; + cv::Mat distort_pt(1, 1, CV_32FC2, distort_points_value); + + cv::Mat undistort_pt; + cv::undistortPoints(distort_pt, undistort_pt, camera_interior, + camera_distort, cv::Mat(), camera_interior); + + EXPECT_NEAR(distort_pt.at(0)[0], undistort_pt.at(0)[0], col / 2) + << "distort point: " << distort_pt << std::endl + << "undistort point: " << undistort_pt; +} + }} // namespace