diff --git a/modules/imgproc/perf/opencl/perf_gftt.cpp b/modules/imgproc/perf/opencl/perf_gftt.cpp index 5ad57971f6..773d93b3da 100644 --- a/modules/imgproc/perf/opencl/perf_gftt.cpp +++ b/modules/imgproc/perf/opencl/perf_gftt.cpp @@ -81,7 +81,6 @@ OCL_PERF_TEST_P(GoodFeaturesToTrackFixture, GoodFeaturesToTrack, minDistance, noArray(), 3, 3, harrisDetector, 0.04, values); SANITY_CHECK(dst); - SANITY_CHECK(values); } } } // namespace opencv_test::ocl diff --git a/modules/imgproc/perf/perf_goodFeaturesToTrack.cpp b/modules/imgproc/perf/perf_goodFeaturesToTrack.cpp index 413f6e8085..1c0d3546ba 100644 --- a/modules/imgproc/perf/perf_goodFeaturesToTrack.cpp +++ b/modules/imgproc/perf/perf_goodFeaturesToTrack.cpp @@ -39,11 +39,7 @@ PERF_TEST_P(Image_MaxCorners_QualityLevel_MinDistance_BlockSize_gradientSize_Use if (corners.size() > 50) corners.erase(corners.begin() + 50, corners.end()); - if (corners_values.size() > 50) - corners_values.erase(corners_values.begin() + 50, corners_values.end()); - SANITY_CHECK(corners); - SANITY_CHECK(corners_values); } } // namespace diff --git a/modules/imgproc/test/ocl/test_gftt.cpp b/modules/imgproc/test/ocl/test_gftt.cpp index fd48e3a118..fc4de1653d 100644 --- a/modules/imgproc/test/ocl/test_gftt.cpp +++ b/modules/imgproc/test/ocl/test_gftt.cpp @@ -111,7 +111,9 @@ OCL_TEST_P(GoodFeaturesToTrack, Accuracy) ASSERT_FALSE(uvalues.empty()); UMatToVector(upoints, upts); + ASSERT_EQ(pts.size(), values.size()); ASSERT_EQ(upts.size(), pts.size()); + ASSERT_EQ(uvalues.size(), values.size()); int mistmatch = 0; for (size_t i = 0; i < pts.size(); ++i) diff --git a/modules/imgproc/test/test_goodfeaturetotrack.cpp b/modules/imgproc/test/test_goodfeaturetotrack.cpp index 45b610ee99..f22890abcc 100644 --- a/modules/imgproc/test/test_goodfeaturetotrack.cpp +++ b/modules/imgproc/test/test_goodfeaturetotrack.cpp @@ -391,8 +391,33 @@ int CV_GoodFeatureToTTest::validate_test_results( int test_case_idx ) ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); for(int i = 0; i < (int)std::min((unsigned int)(corners.size()), (unsigned int)(Refcorners.size())); i++){ - if ( (corners[i].x != Refcorners[i].x) || (corners[i].y != Refcorners[i].y) || (corners_values[i] != Refcorners_values[i])) - printf("i = %i X %2.6f Xref %2.6f Y %2.6f Yref %2.6f Values %2.6f Values ref %2.6f\n",i,corners[i].x,Refcorners[i].x,corners[i].y,Refcorners[i].y,corners_values[i],Refcorners_values[i]); + if ( (corners[i].x != Refcorners[i].x) || (corners[i].y != Refcorners[i].y)) + printf("i = %i X %2.6f Xref %2.6f Y %2.6f Yref %2.6f\n",i,corners[i].x,Refcorners[i].x,corners[i].y,Refcorners[i].y); + } + } + else + { + TEST_MESSAGEL (" Refcorners = ", Refcorners.size()) + TEST_MESSAGEL (" TestCorners = ", corners.size()) + TEST_MESSAGE ("\n") + + ts->set_failed_test_info(cvtest::TS::OK); + } + + e = cv::norm(corners_values, Refcorners_values); // TODO cvtest + + if (e > eps) + { + TEST_MESSAGEL ("Number of features: Refcorners = ", Refcorners.size()) + TEST_MESSAGEL (" TestCorners = ", corners.size()) + TEST_MESSAGE ("\n") + + ts->printf(cvtest::TS::CONSOLE, "actual error: %g, expected: %g", e, eps); + ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); + + for(int i = 0; i < (int)std::min((unsigned int)(corners_values.size()), (unsigned int)(Refcorners_values.size())); i++){ + if (corners_values[i] != Refcorners_values[i]) + printf("Values %2.6f Values ref %2.6f\n",corners_values[i],Refcorners_values[i]); } } else