From 0f30ec8504f8b4d54911d78fa6252dd479c0f154 Mon Sep 17 00:00:00 2001
From: asantamaria <asantamaria@iri.upc.edu>
Date: Tue, 22 Aug 2017 11:23:29 +0200
Subject: [PATCH] opencv3 enabled

---
 src/examples/processor_image_ORB.yaml |  3 ++-
 src/processor_image_feature.cpp       | 25 +++++++++++++++++++++----
 src/processor_image_landmark.cpp      | 26 ++++++++++++++++++++++----
 3 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/src/examples/processor_image_ORB.yaml b/src/examples/processor_image_ORB.yaml
index bc0d69a7f..c405e4ac0 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 0c6155214..3a607da16 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 7e45c8188..e9bd3cff8 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
-- 
GitLab