perf_feature2d.hpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef __OPENCV_PERF_FEATURE2D_HPP__
  2. #define __OPENCV_PERF_FEATURE2D_HPP__
  3. #include "perf_precomp.hpp"
  4. namespace opencv_test
  5. {
  6. /* configuration for tests of detectors/descriptors. shared between ocl and cpu tests. */
  7. // detectors/descriptors configurations to test
  8. #define DETECTORS_ONLY \
  9. FAST_DEFAULT, FAST_20_TRUE_TYPE5_8, FAST_20_TRUE_TYPE7_12, FAST_20_TRUE_TYPE9_16, \
  10. FAST_20_FALSE_TYPE5_8, FAST_20_FALSE_TYPE7_12, FAST_20_FALSE_TYPE9_16, \
  11. \
  12. AGAST_DEFAULT, AGAST_5_8, AGAST_7_12d, AGAST_7_12s, AGAST_OAST_9_16, \
  13. \
  14. MSER_DEFAULT
  15. #define DETECTORS_EXTRACTORS \
  16. ORB_DEFAULT, ORB_1500_13_1, \
  17. AKAZE_DEFAULT, AKAZE_DESCRIPTOR_KAZE, \
  18. BRISK_DEFAULT, \
  19. KAZE_DEFAULT, \
  20. SIFT_DEFAULT
  21. #define CV_ENUM_EXPAND(name, ...) CV_ENUM(name, __VA_ARGS__)
  22. enum Feature2DVals { DETECTORS_ONLY, DETECTORS_EXTRACTORS };
  23. CV_ENUM_EXPAND(Feature2DType, DETECTORS_ONLY, DETECTORS_EXTRACTORS)
  24. typedef tuple<Feature2DType, string> Feature2DType_String_t;
  25. typedef perf::TestBaseWithParam<Feature2DType_String_t> feature2d;
  26. #define TEST_IMAGES testing::Values(\
  27. "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\
  28. "stitching/a3.png", \
  29. "stitching/s2.jpg")
  30. static inline Ptr<Feature2D> getFeature2D(Feature2DType type)
  31. {
  32. switch(type) {
  33. case ORB_DEFAULT:
  34. return ORB::create();
  35. case ORB_1500_13_1:
  36. return ORB::create(1500, 1.3f, 1);
  37. case FAST_DEFAULT:
  38. return FastFeatureDetector::create();
  39. case FAST_20_TRUE_TYPE5_8:
  40. return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_5_8);
  41. case FAST_20_TRUE_TYPE7_12:
  42. return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_7_12);
  43. case FAST_20_TRUE_TYPE9_16:
  44. return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_9_16);
  45. case FAST_20_FALSE_TYPE5_8:
  46. return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_5_8);
  47. case FAST_20_FALSE_TYPE7_12:
  48. return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_7_12);
  49. case FAST_20_FALSE_TYPE9_16:
  50. return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_9_16);
  51. case AGAST_DEFAULT:
  52. return AgastFeatureDetector::create();
  53. case AGAST_5_8:
  54. return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_5_8);
  55. case AGAST_7_12d:
  56. return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_7_12d);
  57. case AGAST_7_12s:
  58. return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_7_12s);
  59. case AGAST_OAST_9_16:
  60. return AgastFeatureDetector::create(70, true, AgastFeatureDetector::OAST_9_16);
  61. case AKAZE_DEFAULT:
  62. return AKAZE::create();
  63. case AKAZE_DESCRIPTOR_KAZE:
  64. return AKAZE::create(AKAZE::DESCRIPTOR_KAZE);
  65. case BRISK_DEFAULT:
  66. return BRISK::create();
  67. case KAZE_DEFAULT:
  68. return KAZE::create();
  69. case MSER_DEFAULT:
  70. return MSER::create();
  71. case SIFT_DEFAULT:
  72. return SIFT::create();
  73. default:
  74. return Ptr<Feature2D>();
  75. }
  76. }
  77. } // namespace
  78. #endif // __OPENCV_PERF_FEATURE2D_HPP__