From 60bd284b833d13eda561494f26986a9385a4d413 Mon Sep 17 00:00:00 2001 From: Tomoaki Teshima Date: Sun, 24 Jan 2021 20:29:52 +0900 Subject: [PATCH 1/2] [moved from opencv] fix wrong index original commit: https://github.com/opencv/opencv/commit/3cfe7b9af99aaeb4ca7d387f78134896c7b3456d --- modules/cudalegacy/src/calib3d.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cudalegacy/src/calib3d.cpp b/modules/cudalegacy/src/calib3d.cpp index b58ca3a98d..03d05be045 100644 --- a/modules/cudalegacy/src/calib3d.cpp +++ b/modules/cudalegacy/src/calib3d.cpp @@ -283,7 +283,7 @@ void cv::cuda::solvePnPRansac(const Mat& object, const Mat& image, const Mat& ca p_transf.z = rot[6] * p.x + rot[7] * p.y + rot[8] * p.z + transl[2]; p_proj.x = p_transf.x / p_transf.z; p_proj.y = p_transf.y / p_transf.z; - if (norm(p_proj - image_normalized.at(0, i)) < max_dist) + if (norm(p_proj - image_normalized.at(i)) < max_dist) inliers->push_back(i); } } From 3778fa373af4dbd6772cf373a04721d47987d413 Mon Sep 17 00:00:00 2001 From: Tomoaki Teshima Date: Mon, 25 Jan 2021 17:14:37 +0900 Subject: [PATCH 2/2] [moved from opencv] fix peaky test failure * follow the review comment original commit: https://github.com/opencv/opencv/commit/96e0902f39bccaecf6e950de528d1eb853f47f32 --- modules/cudalegacy/test/test_calib3d.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/cudalegacy/test/test_calib3d.cpp b/modules/cudalegacy/test/test_calib3d.cpp index e21432a8a4..0d8522e287 100644 --- a/modules/cudalegacy/test/test_calib3d.cpp +++ b/modules/cudalegacy/test/test_calib3d.cpp @@ -163,7 +163,7 @@ struct SolvePnPRansac : testing::TestWithParam CUDA_TEST_P(SolvePnPRansac, Accuracy) { - cv::Mat object = randomMat(cv::Size(5000, 1), CV_32FC3, 0, 100); + cv::Mat object = randomMat(cv::Size(5000, 1), CV_32FC3, -2000, 2000); cv::Mat camera_mat = randomMat(cv::Size(3, 3), CV_32F, 0.5, 1); camera_mat.at(0, 1) = 0.f; camera_mat.at(1, 0) = 0.f; @@ -174,7 +174,7 @@ CUDA_TEST_P(SolvePnPRansac, Accuracy) cv::Mat rvec_gold; cv::Mat tvec_gold; rvec_gold = randomMat(cv::Size(3, 1), CV_32F, 0, 1); - tvec_gold = randomMat(cv::Size(3, 1), CV_32F, 0, 1); + tvec_gold = randomMat(cv::Size(3, 1), CV_32F, 0, 1000); cv::projectPoints(object, rvec_gold, tvec_gold, camera_mat, cv::Mat(1, 8, CV_32F, cv::Scalar::all(0)), image_vec); cv::Mat rvec, tvec; @@ -184,7 +184,7 @@ CUDA_TEST_P(SolvePnPRansac, Accuracy) rvec, tvec, false, 200, 2.f, 100, &inliers); ASSERT_LE(cv::norm(rvec - rvec_gold), 1e-3); - ASSERT_LE(cv::norm(tvec - tvec_gold), 1e-3); + ASSERT_LE(cv::norm(tvec, tvec_gold, NORM_L2 | NORM_RELATIVE), 1e-3); } INSTANTIATE_TEST_CASE_P(CUDA_Calib3D, SolvePnPRansac, ALL_DEVICES);