making OCL tests conform to the comon style
authorAndrey Pavlenko <andrey.pavlenko@itseez.com>
Mon, 24 Mar 2014 06:08:44 +0000 (10:08 +0400)
committerAndrey Pavlenko <andrey.pavlenko@itseez.com>
Mon, 24 Mar 2014 06:08:44 +0000 (10:08 +0400)
modules/nonfree/perf/perf_main.cpp
modules/nonfree/perf/perf_precomp.hpp
modules/nonfree/perf/perf_surf.cpp

index 03f9b71..4959411 100644 (file)
@@ -11,4 +11,29 @@ static const char * impls[] = {
     "plain"
 };
 
-CV_PERF_TEST_MAIN_WITH_IMPLS(nonfree, impls, perf::printCudaInfo())
+#ifdef HAVE_OPENCL
+#define DUMP_PROPERTY_XML(propertyName, propertyValue) \
+    do { \
+        std::stringstream ssName, ssValue;\
+        ssName << propertyName;\
+        ssValue << propertyValue; \
+        ::testing::Test::RecordProperty(ssName.str(), ssValue.str()); \
+    } while (false)
+
+#define DUMP_MESSAGE_STDOUT(msg) \
+    do { \
+        std::cout << msg << std::endl; \
+    } while (false)
+
+#include "opencv2/ocl/private/opencl_dumpinfo.hpp"
+#endif
+
+int main(int argc, char **argv)
+{
+    ::perf::TestBase::setPerformanceStrategy(::perf::PERF_STRATEGY_SIMPLE);
+#if defined(HAVE_CUDA)
+    CV_PERF_TEST_MAIN_INTERNALS(nonfree, impls, perf::printCudaInfo());
+#else if defined(HAVE_OPENCL)
+    CV_PERF_TEST_MAIN_INTERNALS(nonfree, impls, dumpOpenCLDevice());
+#endif
+}
index addba7b..57bbe16 100644 (file)
@@ -9,6 +9,8 @@
 #ifndef __OPENCV_PERF_PRECOMP_HPP__
 #define __OPENCV_PERF_PRECOMP_HPP__
 
+#include "cvconfig.h"
+
 #include "opencv2/ts/ts.hpp"
 
 #include "opencv2/nonfree/nonfree.hpp"
index 84c21b4..fed7213 100644 (file)
@@ -13,36 +13,34 @@ typedef perf::TestBaseWithParam<std::string> surf;
     "stitching/a3.png"
 
 #ifdef HAVE_OPENCV_OCL
-static Ptr<Feature2D> getSURF()
-{
-    ocl::PlatformsInfo p;
-    if(ocl::getOpenCLPlatforms(p) > 0)
-        return new ocl::SURF_OCL;
-    else
-        return new SURF;
-}
-#else
-static Ptr<Feature2D> getSURF()
-{
-    return new SURF;
-}
+#define OCL_TEST_CYCLE() for( ; startTimer(), next(); cv::ocl::finish(), stopTimer())
 #endif
 
 PERF_TEST_P(surf, detect, testing::Values(SURF_IMAGES))
 {
     String filename = getDataPath(GetParam());
     Mat frame = imread(filename, IMREAD_GRAYSCALE);
+    ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename;
 
-    if (frame.empty())
-        FAIL() << "Unable to load source image " << filename;
+    declare.in(frame);
 
     Mat mask;
-    declare.in(frame).time(90);
-    Ptr<Feature2D> detector = getSURF();
-
     vector<KeyPoint> points;
+    Ptr<Feature2D> detector;
 
-    TEST_CYCLE() detector->operator()(frame, mask, points, noArray());
+    if (getSelectedImpl() == "plain")
+    {
+        detector = new SURF;
+        TEST_CYCLE() detector->operator()(frame, mask, points, noArray());
+    }
+#ifdef HAVE_OPENCV_OCL
+    else if (getSelectedImpl() == "ocl")
+    {
+        detector = new ocl::SURF_OCL;
+        OCL_TEST_CYCLE() detector->operator()(frame, mask, points, noArray());
+    }
+#endif
+    else CV_TEST_FAIL_NO_IMPL();
 
     SANITY_CHECK_KEYPOINTS(points, 1e-3);
 }
@@ -51,19 +49,30 @@ PERF_TEST_P(surf, extract, testing::Values(SURF_IMAGES))
 {
     String filename = getDataPath(GetParam());
     Mat frame = imread(filename, IMREAD_GRAYSCALE);
+    ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename;
 
-    if (frame.empty())
-        FAIL() << "Unable to load source image " << filename;
+    declare.in(frame);
 
     Mat mask;
-    declare.in(frame).time(90);
-
-    Ptr<Feature2D> detector = getSURF();
+    Ptr<Feature2D> detector;
     vector<KeyPoint> points;
     vector<float> descriptors;
-    detector->operator()(frame, mask, points, noArray());
 
-    TEST_CYCLE() detector->operator()(frame, mask, points, descriptors, true);
+    if (getSelectedImpl() == "plain")
+    {
+        detector = new SURF;
+        detector->operator()(frame, mask, points, noArray());
+        TEST_CYCLE() detector->operator()(frame, mask, points, descriptors, true);
+    }
+#ifdef HAVE_OPENCV_OCL
+    else if (getSelectedImpl() == "ocl")
+    {
+        detector = new ocl::SURF_OCL;
+        detector->operator()(frame, mask, points, noArray());
+        OCL_TEST_CYCLE() detector->operator()(frame, mask, points, descriptors, true);
+    }
+#endif
+    else CV_TEST_FAIL_NO_IMPL();
 
     SANITY_CHECK(descriptors, 1e-4);
 }
@@ -72,17 +81,29 @@ PERF_TEST_P(surf, full, testing::Values(SURF_IMAGES))
 {
     String filename = getDataPath(GetParam());
     Mat frame = imread(filename, IMREAD_GRAYSCALE);
+    ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename;
 
-    if (frame.empty())
-        FAIL() << "Unable to load source image " << filename;
+    declare.in(frame).time(90);
 
     Mat mask;
-    declare.in(frame).time(90);
-    Ptr<Feature2D> detector = getSURF();
+    Ptr<Feature2D> detector;
     vector<KeyPoint> points;
     vector<float> descriptors;
 
-    TEST_CYCLE() detector->operator()(frame, mask, points, descriptors, false);
+    if (getSelectedImpl() == "plain")
+    {
+        detector = new SURF;
+        TEST_CYCLE() detector->operator()(frame, mask, points, descriptors, false);
+    }
+#ifdef HAVE_OPENCV_OCL
+    else if (getSelectedImpl() == "ocl")
+    {
+        detector = new ocl::SURF_OCL;
+        detector->operator()(frame, mask, points, noArray());
+        OCL_TEST_CYCLE() detector->operator()(frame, mask, points, descriptors, false);
+    }
+#endif
+    else CV_TEST_FAIL_NO_IMPL();
 
     SANITY_CHECK_KEYPOINTS(points, 1e-3);
     SANITY_CHECK(descriptors, 1e-4);