extended perf test warpPerspectiveLarge
authorDaniil Osokin <daniil.osokin@itseez.com>
Tue, 23 Oct 2012 11:14:40 +0000 (15:14 +0400)
committerDaniil Osokin <daniil.osokin@itseez.com>
Tue, 23 Oct 2012 12:06:03 +0000 (16:06 +0400)
modules/imgproc/perf/perf_warp.cpp

index ccc3dde..1c321db 100644 (file)
@@ -15,6 +15,7 @@ CV_ENUM(RemapMode, HALF_SIZE, UPSIDE_DOWN, REFLECTION_X, REFLECTION_BOTH)
 
 typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpAffine;
 typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpPerspective;
+typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode, MatType> > TestWarpPerspectiveNear_t;
 typedef TestBaseWithParam< tr1::tuple<MatType, Size, InterType, BorderMode, RemapMode> > TestRemap;
 
 void update_map(const Mat& src, Mat& map_x, Mat& map_y, const int remapMode );
@@ -80,44 +81,59 @@ PERF_TEST_P( TestWarpPerspective, WarpPerspective,
     SANITY_CHECK(dst);
 }
 
-PERF_TEST_P( TestWarpPerspective, WarpPerspectiveLarge,
+PERF_TEST_P( TestWarpPerspectiveNear_t, WarpPerspectiveNear,
              Combine(
-                Values( sz3MP, sz5MP ),
-                ValuesIn( InterType::all() ),
-                ValuesIn( BorderMode::all() )
+                 Values( Size(176,144), Size(320,240), Size(352,288), Size(480,480),
+                         Size(640,480), Size(704,576), Size(720,408), Size(720,480),
+                         Size(720,576), Size(768,432), Size(800,448), Size(960,720),
+                         Size(1024,768), Size(1280,720), Size(1280,960), Size(1360,720),
+                         Size(1600,1200), Size(1920,1080), Size(2048,1536), Size(2592,1920),
+                         Size(2592,1944), Size(3264,2448), Size(4096,3072), Size(4208,3120) ),
+                 ValuesIn( InterType::all() ),
+                 ValuesIn( BorderMode::all() ),
+                 Values( CV_8UC1, CV_8UC4 )
+                 )
              )
-)
 {
-    Size sz;
-    int borderMode, interType;
-    sz         = get<0>(GetParam());
+    Size size;
+    int borderMode, interType, type;
+    size       = get<0>(GetParam());
     borderMode = get<1>(GetParam());
     interType  = get<2>(GetParam());
+    type = get<3>(GetParam());
+
+    Mat src, img = imread(getDataPath("cv/shared/5MP.png"));
 
-    string resolution;
-    if (sz == sz3MP)
-        resolution = "3MP";
-    else if (sz == sz5MP)
-        resolution = "5MP";
+    if( type == CV_8UC1 )
+    {
+        cvtColor(img, src, COLOR_BGR2GRAY, 1);
+    }
+    else if( type == CV_8UC4 )
+    {
+        cvtColor(img, src, COLOR_BGR2BGRA, 4);
+    }
     else
+    {
         FAIL();
+    }
 
-    Mat src, img = imread(getDataPath("cv/shared/" + resolution + ".png"));
-    cvtColor(img, src, COLOR_BGR2BGRA, 4);
+    resize(src, src, size);
 
-    int shift = 103;
-    Mat srcVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, 0), Vec2f(sz.width-1, 0),
-                                            Vec2f(sz.width-1, sz.height-1), Vec2f(0, sz.height-1));
-    Mat dstVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, shift), Vec2f(sz.width-shift/2, 0),
-                                            Vec2f(sz.width-shift, sz.height-shift), Vec2f(shift/2, sz.height-1));
+    int shift = src.cols*0.04;
+    Mat srcVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, 0), Vec2f(size.width-1, 0),
+                                            Vec2f(size.width-1, size.height-1), Vec2f(0, size.height-1));
+    Mat dstVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, shift), Vec2f(size.width-shift/2, 0),
+                                            Vec2f(size.width-shift, size.height-shift), Vec2f(shift/2, size.height-1));
     Mat warpMat = getPerspectiveTransform(srcVertices, dstVertices);
 
-    Mat dst(sz, CV_8UC4);
+    Mat dst(size, type);
 
     declare.in(src).out(dst);
 
     TEST_CYCLE()
-        warpPerspective( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) );
+    {
+        warpPerspective( src, dst, warpMat, size, interType, borderMode, Scalar::all(150) );
+    }
 
     SANITY_CHECK(dst);
 }