1 #include "../perf_precomp.hpp"
2 #include "opencv2/ts/ocl_perf.hpp"
3 #include "../perf_feature2d.hpp"
4
5 #ifdef HAVE_OPENCL
6
7 namespace opencv_test {
8 namespace ocl {
9
OCL_PERF_TEST_P(feature2d,detect,testing::Combine (Feature2DType::all (),TEST_IMAGES))10 OCL_PERF_TEST_P(feature2d, detect, testing::Combine(Feature2DType::all(), TEST_IMAGES))
11 {
12 Ptr<Feature2D> detector = getFeature2D(get<0>(GetParam()));
13 std::string filename = getDataPath(get<1>(GetParam()));
14 Mat mimg = imread(filename, IMREAD_GRAYSCALE);
15
16 ASSERT_FALSE(mimg.empty());
17 ASSERT_TRUE(detector);
18
19 UMat img, mask;
20 mimg.copyTo(img);
21 declare.in(img);
22 vector<KeyPoint> points;
23
24 OCL_TEST_CYCLE() detector->detect(img, points, mask);
25
26 EXPECT_GT(points.size(), 20u);
27 SANITY_CHECK_NOTHING();
28 }
29
OCL_PERF_TEST_P(feature2d,extract,testing::Combine (testing::Values (DETECTORS_EXTRACTORS),TEST_IMAGES))30 OCL_PERF_TEST_P(feature2d, extract, testing::Combine(testing::Values(DETECTORS_EXTRACTORS), TEST_IMAGES))
31 {
32 Ptr<Feature2D> detector = AKAZE::create();
33 Ptr<Feature2D> extractor = getFeature2D(get<0>(GetParam()));
34 std::string filename = getDataPath(get<1>(GetParam()));
35 Mat mimg = imread(filename, IMREAD_GRAYSCALE);
36
37 ASSERT_FALSE(mimg.empty());
38 ASSERT_TRUE(extractor);
39
40 UMat img, mask;
41 mimg.copyTo(img);
42 declare.in(img);
43 vector<KeyPoint> points;
44 detector->detect(img, points, mask);
45
46 EXPECT_GT(points.size(), 20u);
47
48 UMat descriptors;
49
50 OCL_TEST_CYCLE() extractor->compute(img, points, descriptors);
51
52 EXPECT_EQ((size_t)descriptors.rows, points.size());
53 SANITY_CHECK_NOTHING();
54 }
55
OCL_PERF_TEST_P(feature2d,detectAndExtract,testing::Combine (testing::Values (DETECTORS_EXTRACTORS),TEST_IMAGES))56 OCL_PERF_TEST_P(feature2d, detectAndExtract, testing::Combine(testing::Values(DETECTORS_EXTRACTORS), TEST_IMAGES))
57 {
58 Ptr<Feature2D> detector = getFeature2D(get<0>(GetParam()));
59 std::string filename = getDataPath(get<1>(GetParam()));
60 Mat mimg = imread(filename, IMREAD_GRAYSCALE);
61
62 ASSERT_FALSE(mimg.empty());
63 ASSERT_TRUE(detector);
64
65 UMat img, mask;
66 mimg.copyTo(img);
67 declare.in(img);
68 vector<KeyPoint> points;
69 UMat descriptors;
70
71 OCL_TEST_CYCLE() detector->detectAndCompute(img, mask, points, descriptors, false);
72
73 EXPECT_GT(points.size(), 20u);
74 EXPECT_EQ((size_t)descriptors.rows, points.size());
75 SANITY_CHECK_NOTHING();
76 }
77
78 } // ocl
79 } // cvtest
80
81 #endif // HAVE_OPENCL
82