diff --git a/modules/calib3d/perf/perf_pnp.cpp b/modules/calib3d/perf/perf_pnp.cpp index 87016dd92..a03a6330f 100644 --- a/modules/calib3d/perf/perf_pnp.cpp +++ b/modules/calib3d/perf/perf_pnp.cpp @@ -10,7 +10,7 @@ using namespace perf; using std::tr1::make_tuple; using std::tr1::get; -CV_ENUM(pnpAlgo, SOLVEPNP_ITERATIVE, SOLVEPNP_EPNP, SOLVEPNP_P3P, SOLVEPNP_DLS) +CV_ENUM(pnpAlgo, SOLVEPNP_ITERATIVE, SOLVEPNP_EPNP, SOLVEPNP_P3P, SOLVEPNP_DLS, SOLVEPNP_UPNP) typedef std::tr1::tuple PointsNum_Algo_t; typedef perf::TestBaseWithParam PointsNum_Algo; @@ -20,7 +20,7 @@ typedef perf::TestBaseWithParam PointsNum; PERF_TEST_P(PointsNum_Algo, solvePnP, testing::Combine( testing::Values(4, 3*9, 7*13), //TODO: find why results on 4 points are too unstable - testing::Values((int)SOLVEPNP_ITERATIVE, (int)SOLVEPNP_EPNP) + testing::Values((int)SOLVEPNP_ITERATIVE, (int)SOLVEPNP_EPNP, (int)SOLVEPNP_UPNP) ) ) { diff --git a/modules/calib3d/test/test_solvepnp_ransac.cpp b/modules/calib3d/test/test_solvepnp_ransac.cpp index 7780462c1..c8d8735b8 100644 --- a/modules/calib3d/test/test_solvepnp_ransac.cpp +++ b/modules/calib3d/test/test_solvepnp_ransac.cpp @@ -58,6 +58,7 @@ public: eps[SOLVEPNP_EPNP] = 1.0e-2; eps[SOLVEPNP_P3P] = 1.0e-2; eps[SOLVEPNP_DLS] = 1.0e-2; + eps[SOLVEPNP_UPNP] = 1.0e-2; totalTestsCount = 10; } ~CV_solvePnPRansac_Test() {} @@ -118,6 +119,7 @@ protected: Mat trueRvec, trueTvec; Mat intrinsics, distCoeffs; generateCameraMatrix(intrinsics, rng); + if (method == 4) intrinsics.at(1,1) = intrinsics.at(0,0); if (mode == 0) distCoeffs = Mat::zeros(4, 1, CV_64FC1); else @@ -159,7 +161,7 @@ protected: points.resize(pointsCount); generate3DPointCloud(points); - const int methodsCount = 4; + const int methodsCount = 5; RNG rng = ts->get_rng(); @@ -184,7 +186,7 @@ protected: } } } - double eps[4]; + double eps[5]; int totalTestsCount; }; @@ -197,6 +199,7 @@ public: eps[SOLVEPNP_EPNP] = 1.0e-6; eps[SOLVEPNP_P3P] = 1.0e-4; eps[SOLVEPNP_DLS] = 1.0e-4; + eps[SOLVEPNP_UPNP] = 1.0e-4; totalTestsCount = 1000; } @@ -208,6 +211,7 @@ protected: Mat trueRvec, trueTvec; Mat intrinsics, distCoeffs; generateCameraMatrix(intrinsics, rng); + if (method == 4) intrinsics.at(1,1) = intrinsics.at(0,0); if (mode == 0) distCoeffs = Mat::zeros(4, 1, CV_64FC1); else