diff --git a/src/examples/processor_image_ORB.yaml b/src/examples/processor_image_ORB.yaml index bc0d69a7f9108d1acd5c7cfea34c9b954a5b7e18..c405e4ac0bc78b4403a7f718eba110e8e93162bb 100644 --- a/src/examples/processor_image_ORB.yaml +++ b/src/examples/processor_image_ORB.yaml @@ -14,7 +14,8 @@ detector-descriptor: matcher: minimum normalized score: 0.85 - similarity norm: 6 # enum { NORM_INF=1, NORM_L1=2, NORM_L2=4, NORM_L2SQR=5, NORM_HAMMING=6, NORM_HAMMING2=7, NORM_TYPE_MASK=7, NORM_RELATIVE=8, NORM_MINMAX=32 }; + similarity norm: 6 # OpenCV 3 enum { BruteForce=1 (it uses L2 ), BruteForce-L1=2, BruteForce-Hamming=3, BruteForce-Hamming(2)=4, FlannBased=5}; + # OpenCV 2 enum { NORM_INF=1, NORM_L1=2, NORM_L2=4, NORM_L2SQR=5, NORM_HAMMING=6, NORM_HAMMING2=7, NORM_TYPE_MASK=7, NORM_RELATIVE=8, NORM_MINMAX=32 }; roi: width: 20 height: 20 diff --git a/src/processor_image_feature.cpp b/src/processor_image_feature.cpp index 0c6155214f2fd4922452da5932d4851207385582..3a607da1608cbc4e8b5ec4b1267dbb0b2c479a7f 100644 --- a/src/processor_image_feature.cpp +++ b/src/processor_image_feature.cpp @@ -56,9 +56,27 @@ ProcessorImageFeature::ProcessorImageFeature(ProcessorParamsImage _params) : } // 2. matcher params -// TODO: FIX this - matcher_ptr_ = cv::DescriptorMatcher::create("BruteForce"); -// matcher_ptr_ = cv::DescriptorMatcher::create(_params.matcher.similarity_norm); + // TODO: FIX this. Problems initializing with int (cv::DescriptorMatcher::create(int matcherType) + std::string matcherType = "BruteForce-Hamming"; // Default + switch (_params.matcher.similarity_norm) + { + case 1: + matcherType = "BruteForce"; + break; + case 2: + matcherType = "BruteForce-L1"; + break; + case 3: + matcherType = "BruteForce-Hamming"; + break; + case 4: + matcherType = "BruteForce-Hamming(2)"; + break; + case 5: + matcherType = "FlannBased"; + break; + } + matcher_ptr_ = cv::DescriptorMatcher::create(matcherType); } #else @@ -108,7 +126,6 @@ ProcessorImageFeature::ProcessorImageFeature(ProcessorParamsImage _params) : // 2. matcher params matcher_ptr_ = std::make_shared<cv::BFMatcher>(_params.matcher.similarity_norm); - } #endif diff --git a/src/processor_image_landmark.cpp b/src/processor_image_landmark.cpp index 7e45c81880352e6cbbfa670eae97132abb348ffc..e9bd3cff8e0109f9e1152f27f46249cf919bcec2 100644 --- a/src/processor_image_landmark.cpp +++ b/src/processor_image_landmark.cpp @@ -62,9 +62,28 @@ ProcessorImageLandmark::ProcessorImageLandmark(const ProcessorParamsImage& _para } // 2. matcher params - // TODO: FIX this - matcher_ptr_ = cv::DescriptorMatcher::create("BruteForce"); - // matcher_ptr_ = cv::DescriptorMatcher::create(_params.matcher.similarity_norm); + // TODO: FIX this. Problems initializing with int (cv::DescriptorMatcher::create(int matcherType) + std::string matcherType = "BruteForce-Hamming"; // Default + switch (_params.matcher.similarity_norm) + { + case 1: + matcherType = "FlannBased"; + break; + case 2: + matcherType = "BruteForce"; + break; + case 3: + matcherType = "BruteForce-L1"; + break; + case 4: + matcherType = "BruteForce-Hamming"; + break; + case 5: + matcherType = "BruteForce-Hamming(2)"; + break; + } + + matcher_ptr_ = cv::DescriptorMatcher::create(matcherType); } #else @@ -118,7 +137,6 @@ ProcessorImageLandmark::ProcessorImageLandmark(const ProcessorParamsImage& _para // 2. matcher params matcher_ptr_ = std::make_shared<cv::BFMatcher>(_params.matcher.similarity_norm); - } #endif