exploitGenericDescriptorMatcher_clear.cpp
1 | // exploitGenericDescriptorMatcher_clear.cpp : R\[ AvP[ṼGg |Cg`܂B
|
---|---|
2 | //
|
3 | |
4 | #include "StdAfx.h" |
5 | |
6 | // std C++
|
7 | #include <stdexcept> |
8 | #include <vector> |
9 | |
10 | // OCV
|
11 | #include <opencv2/core/core.hpp> |
12 | #include <opencv2/highgui/highgui.hpp> |
13 | #include <opencv2/features2d/features2d.hpp> |
14 | |
15 | int main(int argc, char* argv[]) |
16 | { |
17 | if(argc < 2) |
18 | throw std::domain_error("too few arguments"); |
19 | |
20 | std::vector<cv::Mat> image; |
21 | for(int i = 1; i < argc; i++) |
22 | image.push_back(cv::imread(argv[i], 0));
|
23 | |
24 | #define OCTAVE 4 |
25 | #define OCTAVE_LAYER 2 |
26 | cv::Ptr<cv::FeatureDetector> fd(new cv::SurfFeatureDetector(500, OCTAVE, OCTAVE_LAYER)); |
27 | std::vector<std::vector<cv::KeyPoint>> kp; |
28 | fd->detect(image, kp); |
29 | |
30 | cv::Ptr<cv::GenericDescriptorMatcher> dm(new cv::VectorDescriptorMatcher(
|
31 | new cv::SurfDescriptorExtractor(OCTAVE, OCTAVE_LAYER),
|
32 | new cv::BruteForceMatcher<cv::L2<float>>)); |
33 | dm->add(image, kp); |
34 | |
35 | #ifndef HACK_GenericDescriptorMatcher_clear
|
36 | dm->clear(); |
37 | #else //!HACK_GenericDescriptorMatcher_clear |
38 | dm = new cv::VectorDescriptorMatcher(
|
39 | new cv::SurfDescriptorExtractor(OCTAVE, OCTAVE_LAYER),
|
40 | new cv::BruteForceMatcher<cv::L2<float>>); |
41 | #endif //!HACK_GenericDescriptorMatcher_clear |
42 | |
43 | dm->add(image, kp); //!!
|
44 | |
45 | return 0; |
46 | } |