Java API: string constants for features2d classes are converted to enums
authorAndrey Kamaev <no@email>
Tue, 2 Aug 2011 11:40:41 +0000 (11:40 +0000)
committerAndrey Kamaev <no@email>
Tue, 2 Aug 2011 11:40:41 +0000 (11:40 +0000)
modules/java/src/cpp/features2d_manual.hpp

index 044a7aa..9812fcf 100644 (file)
@@ -15,11 +15,106 @@ public:
     CV_WRAP virtual bool empty() const;\r
 #endif\r
 \r
+    enum\r
+    {\r
+        FAST          = 1,\r
+        STAR          = 2,\r
+        SIFT          = 3,\r
+        SURF          = 4,\r
+        ORB           = 5,\r
+        MSER          = 6,\r
+        GFTT          = 7,\r
+        HARRIS        = 8,\r
+\r
+\r
+        GRIDRETECTOR = 1000,\r
+\r
+        GRID_FAST      = GRIDRETECTOR + FAST,\r
+        GRID_STAR      = GRIDRETECTOR + STAR,\r
+        GRID_SIFT      = GRIDRETECTOR + SIFT,\r
+        GRID_SURF      = GRIDRETECTOR + SURF,\r
+        GRID_ORB       = GRIDRETECTOR + ORB,\r
+        GRID_MSER      = GRIDRETECTOR + MSER,\r
+        GRID_GFTT      = GRIDRETECTOR + GFTT,\r
+        GRID_HARRIS    = GRIDRETECTOR + HARRIS,\r
+\r
+\r
+        PYRAMIDDETECTOR = 2000,\r
+\r
+        PYRAMID_FAST   = PYRAMIDDETECTOR + FAST,\r
+        PYRAMID_STAR   = PYRAMIDDETECTOR + STAR,\r
+        PYRAMID_SIFT   = PYRAMIDDETECTOR + SIFT,\r
+        PYRAMID_SURF   = PYRAMIDDETECTOR + SURF,\r
+        PYRAMID_ORB    = PYRAMIDDETECTOR + ORB,\r
+        PYRAMID_MSER   = PYRAMIDDETECTOR + MSER,\r
+        PYRAMID_GFTT   = PYRAMIDDETECTOR + GFTT,\r
+        PYRAMID_HARRIS = PYRAMIDDETECTOR + HARRIS,\r
+\r
+        DYNAMICDETECTOR = 3000,\r
+\r
+        DYNAMIC_FAST   = DYNAMICDETECTOR + FAST,\r
+        DYNAMIC_STAR   = DYNAMICDETECTOR + STAR,\r
+        DYNAMIC_SIFT   = DYNAMICDETECTOR + SIFT,\r
+        DYNAMIC_SURF   = DYNAMICDETECTOR + SURF,\r
+        DYNAMIC_ORB    = DYNAMICDETECTOR + ORB,\r
+        DYNAMIC_MSER   = DYNAMICDETECTOR + MSER,\r
+        DYNAMIC_GFTT   = DYNAMICDETECTOR + GFTT,\r
+        DYNAMIC_HARRIS = DYNAMICDETECTOR + HARRIS\r
+    };\r
+\r
     //supported: FAST STAR SIFT SURF ORB MSER GFTT HARRIS Grid(XXXX) Pyramid(XXXX) Dynamic(XXXX)\r
     //not supported: SimpleBlob, Dense\r
-    CV_WRAP_AS(create) static javaFeatureDetector* jcreate( const string& detectorType )\r
+    CV_WRAP static javaFeatureDetector* create( int detectorType )\r
     {\r
-        Ptr<FeatureDetector> detector = FeatureDetector::create(detectorType);\r
+        string name;\r
+        if (detectorType > DYNAMICDETECTOR)\r
+        {\r
+            name = "Dynamic";\r
+            detectorType -= DYNAMICDETECTOR;\r
+        }\r
+        if (detectorType > PYRAMIDDETECTOR)\r
+        {\r
+            name = "Pyramid";\r
+            detectorType -= PYRAMIDDETECTOR;\r
+        }\r
+        if (detectorType > GRIDRETECTOR)\r
+        {\r
+            name = "Grid";\r
+            detectorType -= GRIDRETECTOR;\r
+        }\r
+\r
+        switch(detectorType)\r
+        {\r
+        case FAST:\r
+            name += "FAST";\r
+            break;\r
+        case STAR:\r
+            name += "STAR";\r
+            break;\r
+        case SIFT:\r
+            name += "SIFT";\r
+            break;\r
+        case SURF:\r
+            name += "SURF";\r
+            break;\r
+        case ORB:\r
+            name += "ORB";\r
+            break;\r
+        case MSER:\r
+            name += "MSER";\r
+            break;\r
+        case GFTT:\r
+            name += "GFTT";\r
+            break;\r
+        case HARRIS:\r
+            name += "HARRIS";\r
+            break;\r
+        default:\r
+            CV_Error( CV_StsBadArg, "Specified feature detector type is not supported." );\r
+            break;\r
+        }\r
+\r
+        Ptr<FeatureDetector> detector = FeatureDetector::create(name);\r
         detector.addref();\r
         return (javaFeatureDetector*)((FeatureDetector*) detector);\r
     }\r
@@ -65,6 +160,15 @@ public:
                    const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );\r
 #endif\r
 \r
+    enum\r
+    {\r
+        FLANNBASED            = 1,\r
+        BRUTEFORCE            = 2,\r
+        BRUTEFORCE_L1         = 3,\r
+        BRUTEFORCE_HAMMING    = 4,\r
+        BRUTEFORCE_HAMMINGLUT = 5\r
+    };\r
+\r
     CV_WRAP_AS(clone) javaDescriptorMatcher* jclone( bool emptyTrainData=false ) const\r
     {\r
         Ptr<DescriptorMatcher> matcher = this->clone(emptyTrainData);\r
@@ -73,9 +177,34 @@ public:
     }\r
     \r
     //supported: FlannBased, BruteForce, BruteForce-L1, BruteForce-Hamming, BruteForce-HammingLUT\r
-    CV_WRAP_AS(create) static javaDescriptorMatcher* jcreate( const string& descriptorMatcherType )\r
+    CV_WRAP static javaDescriptorMatcher* create( int matcherType )\r
     {\r
-        Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create(descriptorMatcherType);\r
+        string name;\r
+\r
+        switch(matcherType)\r
+        {\r
+        case FLANNBASED:\r
+            name = "FlannBased";\r
+            break;\r
+        case BRUTEFORCE:\r
+            name = "BruteForce";\r
+            break;\r
+        case BRUTEFORCE_L1:\r
+            name = "BruteForce-L1";\r
+            break;\r
+        case BRUTEFORCE_HAMMING:\r
+            name = "BruteForce-Hamming";\r
+            break;\r
+        case BRUTEFORCE_HAMMINGLUT:\r
+            name = "BruteForce-HammingLUT";\r
+            break;\r
+        default:\r
+            CV_Error( CV_StsBadArg, "Specified descriptor matcher type is not supported." );\r
+            break;\r
+\r
+        }\r
+\r
+        Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create(name);\r
         matcher.addref();\r
         return (javaDescriptorMatcher*)((DescriptorMatcher*) matcher);\r
     }\r
@@ -107,11 +236,54 @@ public:
     CV_WRAP virtual bool empty() const;\r
 #endif\r
 \r
+    enum\r
+    {\r
+        SIFT  = 1,\r
+        SURF  = 2,\r
+        ORB   = 3,\r
+        BRIEF = 4,\r
+\r
+\r
+        OPPONENTEXTRACTOR = 1000,\r
+\r
+        OPPENENT_SIFT  = OPPONENTEXTRACTOR + SIFT,\r
+        OPPENENT_SURF  = OPPONENTEXTRACTOR + SURF,\r
+        OPPENENT_ORB   = OPPONENTEXTRACTOR + ORB,\r
+        OPPENENT_BRIEF = OPPONENTEXTRACTOR + BRIEF\r
+    };\r
+\r
     //supported SIFT, SURF, ORB, BRIEF, Opponent(XXXX)\r
     //not supported: Calonder\r
-    CV_WRAP_AS(create) static javaDescriptorExtractor* jcreate( const string& descriptorExtractorType )\r
+    CV_WRAP static javaDescriptorExtractor* create( int extractorType )\r
     {\r
-        Ptr<DescriptorExtractor> extractor = DescriptorExtractor::create(descriptorExtractorType);\r
+        string name;\r
+\r
+        if (extractorType > OPPONENTEXTRACTOR)\r
+        {\r
+            name = "Opponent";\r
+            extractorType -= OPPONENTEXTRACTOR;\r
+        }\r
+\r
+        switch(extractorType)\r
+        {\r
+        case SIFT:\r
+            name += "SIFT";\r
+            break;\r
+        case SURF:\r
+            name += "SURF";\r
+            break;\r
+        case ORB:\r
+            name += "ORB";\r
+            break;\r
+        case BRIEF:\r
+            name += "BRIEF";\r
+            break;\r
+        default:\r
+            CV_Error( CV_StsBadArg, "Specified descriptor extractor type is not supported." );\r
+            break;\r
+        }\r
+\r
+        Ptr<DescriptorExtractor> extractor = DescriptorExtractor::create(name);\r
         extractor.addref();\r
         return (javaDescriptorExtractor*)((DescriptorExtractor*) extractor);\r
     }\r