From ae4ab7ff547ecb3c0c943c4cb00442ac44f08d13 Mon Sep 17 00:00:00 2001 From: Alexey Spizhevoy Date: Mon, 14 Feb 2011 08:56:57 +0000 Subject: [PATCH] fixed GPU meanshift segmentation test under Ubuntu --- tests/gpu/src/mssegmentation.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tests/gpu/src/mssegmentation.cpp b/tests/gpu/src/mssegmentation.cpp index f6a9e34534..8a9ba8803d 100644 --- a/tests/gpu/src/mssegmentation.cpp +++ b/tests/gpu/src/mssegmentation.cpp @@ -86,11 +86,10 @@ struct CV_GpuMeanShiftSegmentationTest : public CvTest { ts->set_failed_test_info(CvTS::FAIL_MISSING_TEST_DATA); return; } - if (abs(cv::norm(dst_rgb - dst_ref, NORM_INF)) > 1e-3) + if (CheckSimilarity(dst_rgb, dst_ref, 1e-3f) != CvTS::OK) { ts->printf(CvTS::LOG, "\ndiffers from image *minsize%d.png\n", minsize); ts->set_failed_test_info(CvTS::FAIL_BAD_ACCURACY); - return; } } } @@ -103,4 +102,19 @@ struct CV_GpuMeanShiftSegmentationTest : public CvTest { ts->set_failed_test_info(CvTS::OK); } + + int CheckSimilarity(const Mat& m1, const Mat& m2, float max_err) + { + Mat diff; + cv::matchTemplate(m1, m2, diff, CV_TM_CCORR_NORMED); + + float err = abs(diff.at(0, 0) - 1.f); + + if (err > max_err) + return CvTS::FAIL_INVALID_OUTPUT; + + return CvTS::OK; + } + + } ms_segm_test;