"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
+}
"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);
}
{
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);
}
{
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);