From e85ae5f2f009e914fe7d1fe32b9758410e92c78d Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Thu, 23 Oct 2014 12:33:38 +0400 Subject: [PATCH 1/2] Fixed imgcodecs tests - Imgcodecs_Image, write_imageseq - assuming JPEG images have losses - Imgcodecs_Drawing, c_regression - replaced assert calls - Imgcodecs_Drawing - exact comparison with reference image --- modules/imgcodecs/test/test_drawing.cpp | 14 +++++++++----- modules/imgcodecs/test/test_grfmt.cpp | 9 ++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/modules/imgcodecs/test/test_drawing.cpp b/modules/imgcodecs/test/test_drawing.cpp index e4936f63a..f4e157fb2 100644 --- a/modules/imgcodecs/test/test_drawing.cpp +++ b/modules/imgcodecs/test/test_drawing.cpp @@ -75,11 +75,12 @@ void CV_DrawingTest::run( int ) } else { - float err = (float)cvtest::norm( testImg, valImg, CV_RELATIVE_L1 ); - float Eps = 0.9f; + // image should match exactly + float err = (float)cvtest::norm( testImg, valImg, NORM_L1 ); + float Eps = 1; if( err > Eps) { - ts->printf( ts->LOG, "CV_RELATIVE_L1 between testImg and valImg is equal %f (larger than %f)\n", err, Eps ); + ts->printf( ts->LOG, "NORM_L1 between testImg and valImg is equal %f (larger than %f)\n", err, Eps ); ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); } else @@ -261,6 +262,7 @@ void CV_DrawingTest_C::draw( Mat& _img ) polyline[3] = cvPoint(0, imgSize.height); CvPoint* pts = &polyline[0]; int n = (int)polyline.size(); + int actualSize = 0; cvFillPoly( &img, &pts, &n, 1, cvScalar(255,255,255) ); CvPoint p1 = cvPoint(1,1), p2 = cvPoint(3,3); @@ -290,7 +292,8 @@ void CV_DrawingTest_C::draw( Mat& _img ) polyline.resize(9); pts = &polyline[0]; n = (int)polyline.size(); - assert( cvEllipse2Poly( cvPoint(430,180), cvSize(100,150), 30, 0, 150, &polyline[0], 20 ) == n ); + actualSize = cvEllipse2Poly( cvPoint(430,180), cvSize(100,150), 30, 0, 150, &polyline[0], 20 ); + CV_Assert(actualSize == n); cvPolyLine( &img, &pts, &n, 1, false, cvScalar(0,0,150), 4, CV_AA ); n = 0; for( vector::const_iterator it = polyline.begin(); n < (int)polyline.size()-1; ++it, n++ ) @@ -301,7 +304,8 @@ void CV_DrawingTest_C::draw( Mat& _img ) polyline.resize(19); pts = &polyline[0]; n = (int)polyline.size(); - assert( cvEllipse2Poly( cvPoint(500,300), cvSize(50,80), 0, 0, 180, &polyline[0], 10 ) == n ); + actualSize = cvEllipse2Poly( cvPoint(500,300), cvSize(50,80), 0, 0, 180, &polyline[0], 10 ); + CV_Assert(actualSize == n); cvPolyLine( &img, &pts, &n, 1, true, Scalar(100,200,100), 20 ); cvFillConvexPoly( &img, pts, n, cvScalar(0, 80, 0) ); diff --git a/modules/imgcodecs/test/test_grfmt.cpp b/modules/imgcodecs/test/test_grfmt.cpp index 79b79eb61..451a3a1e4 100644 --- a/modules/imgcodecs/test/test_grfmt.cpp +++ b/modules/imgcodecs/test/test_grfmt.cpp @@ -147,10 +147,13 @@ public: CV_Assert(img.size() == img_test.size()); CV_Assert(img.type() == img_test.type()); - double n = cvtest::norm(img, img_test, NORM_L2); - if ( n > 1.0) + // JPEG format does not provide 100% accuracy + // using fuzzy image comparison + double n = cvtest::norm(img, img_test, NORM_L1); + double expected = 0.05 * img.size().area(); + if ( n > expected) { - ts->printf(ts->LOG, "norm = %f \n", n); + ts->printf(ts->LOG, "norm = %f > expected = %f \n", n, expected); ts->set_failed_test_info(ts->FAIL_MISMATCH); } } From 071e78d02e60d9864b3a65ed424c9913ddc407d0 Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Thu, 23 Oct 2014 18:43:24 +0400 Subject: [PATCH 2/2] Disabled videoio_video_prop_fps test This test does not return correct values with some software configurations. Possible problem with ffmpeg on buildbot's linux-slave. --- modules/videoio/test/test_basic_props.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/videoio/test/test_basic_props.cpp b/modules/videoio/test/test_basic_props.cpp index 3f92876c5..ef2fabe5f 100644 --- a/modules/videoio/test/test_basic_props.cpp +++ b/modules/videoio/test/test_basic_props.cpp @@ -108,7 +108,7 @@ TEST(Videoio_Video, actual_resolution) } } -TEST(Videoio_Video, prop_fps) +TEST(Videoio_Video, DISABLED_prop_fps) { const size_t n = sizeof(ext)/sizeof(ext[0]); const string src_dir = TS::ptr()->get_data_path();