The samples were updated through CommandLineParser class
authorKirill Kornyakov <no@email>
Fri, 3 Jun 2011 16:41:41 +0000 (16:41 +0000)
committerKirill Kornyakov <no@email>
Fri, 3 Jun 2011 16:41:41 +0000 (16:41 +0000)
samples/cpp/bagofwords_classification.cpp
samples/cpp/bgfg_segm.cpp

index 7203ccc..9e3f334 100644 (file)
@@ -1,3 +1,4 @@
+#include "opencv2/core/core.hpp"
 #include "opencv2/highgui/highgui.hpp"
 #include "opencv2/imgproc/imgproc.hpp"
 #include "opencv2/features2d/features2d.hpp"
@@ -27,29 +28,26 @@ const string bowImageDescriptorsDir = "/bowImageDescriptors";
 const string svmsDir = "/svms";
 const string plotsDir = "/plots";
 
-void help(char** argv)
-{
-       cout << "\nThis program shows how to read in, train on and produce test results for the PASCAL VOC (Visual Object Challenge) data. \n"
-        << "It shows how to use detectors, descriptors and recognition methods \n"
-               "Using OpenCV version %s\n" << CV_VERSION << "\n"
-        << "Call: \n"
-    << "Format:\n ./" << argv[0] << " [VOC path] [result directory]  \n"
-    << "       or:  \n"
-    << " ./" << argv[0] << " [VOC path] [result directory] [feature detector] [descriptor extractor] [descriptor matcher] \n"
-    << "\n"
-    << "Input parameters: \n"
-    << "[VOC path]             Path to Pascal VOC data (e.g. /home/my/VOCdevkit/VOC2010). Note: VOC2007-VOC2010 are supported. \n"
-    << "[result directory]     Path to result diractory. Following folders will be created in [result directory]: \n"
-    << "                         bowImageDescriptors - to store image descriptors, \n"
-    << "                         svms - to store trained svms, \n"
-    << "                         plots - to store files for plots creating. \n"
-    << "[feature detector]     Feature detector name (e.g. SURF, FAST...) - see createFeatureDetector() function in detectors.cpp \n"
-    << "                         Currently 12/2010, this is FAST, STAR, SIFT, SURF, MSER, GFTT, HARRIS \n"
-    << "[descriptor extractor] Descriptor extractor name (e.g. SURF, SIFT) - see createDescriptorExtractor() function in descriptors.cpp \n"
-    << "                         Currently 12/2010, this is SURF, OpponentSIFT, SIFT, OpponentSURF, BRIEF \n"
-    << "[descriptor matcher]   Descriptor matcher name (e.g. BruteForce) - see createDescriptorMatcher() function in matchers.cpp \n"
-    << "                         Currently 12/2010, this is BruteForce, BruteForce-L1, FlannBased, BruteForce-Hamming, BruteForce-HammingLUT \n"
-    << "\n";
+void help()
+{
+    printf("\nThis program shows how to read in, train on and produce test results for the PASCAL VOC (Visual Object Challenge) data. \n"
+           "It shows how to use detectors, descriptors and recognition methods \n"
+           "Usage: \n"
+           "Format:\n"
+           "./bagofwords_classification \n"
+           "--voc_path=<Path to Pascal VOC data (e.g. /home/my/VOCdevkit/VOC2010). \n"
+           "                               Note: VOC2007-VOC2010 are supported.> \n"
+           "--result_directory=<Path to result directory. Following folders will be created in [result directory]: \n"
+           "                                 bowImageDescriptors - to store image descriptors, \n"
+           "                                 svms - to store trained svms, \n"
+           "                                 plots - to store files for plots creating. \n"
+           "[--feature_detector]=<Feature detector name (e.g. SURF, FAST...) - see createFeatureDetector() function in detectors.cpp \n"
+           "                      Currently 12/2010, this is FAST, STAR, SIFT, SURF, MSER, GFTT, HARRIS> \n"
+           "[--descriptor_extractor]=<Descriptor extractor name (e.g. SURF, SIFT) - see createDescriptorExtractor() function in descriptors.cpp \n"
+           "                         Currently 12/2010, this is SURF, OpponentSIFT, SIFT, OpponentSURF, BRIEF> \n"
+           "[--descriptor_matcher]=<Descriptor matcher name (e.g. BruteForce) - see createDescriptorMatcher() function in matchers.cpp \n"
+           "                         Currently 12/2010, this is BruteForce, BruteForce-L1, FlannBased, BruteForce-Hamming, BruteForce-HammingLUT> \n"
+           "\n");
 }
 
 
@@ -2507,16 +2505,24 @@ void computeGnuPlotOutput( const string& resPath, const string& objClassName, Vo
 
 
 
-int main(int argc, char** argv)
+int main(int argc, const char** argv)
 {
-    if( argc != 3 && argc != 6 )
+    help();
+
+    CommandLineParser parser(argc, argv);
+
+    const string vocPath = parser.get<string>("--voc_path");
+    const string resPath = parser.get<string>("--result_directory");
+    const string featureDetectName = parser.get<string>("--feature_detector");
+    const string descExtName = parser.get<string>("--descriptor_extractor");
+    const string descMatchName = parser.get<string>("--descriptor_matcher");
+
+    if( vocPath.empty() || resPath.empty())
     {
-       help(argv);
+        help();
+        printf("Cannot find --voc_path=%s or --result_directory=%s\n", vocPath.c_str(), resPath.c_str());
         return -1;
     }
-
-    const string vocPath = argv[1], resPath = argv[2];
-
     // Read or set default parameters
     string vocName;
     DDMParams ddmParams;
@@ -2534,12 +2540,12 @@ int main(int argc, char** argv)
     else
     {
         vocName = getVocName(vocPath);
-        if( argc!= 6 )
+        if( featureDetectName.empty() || descExtName.empty() || descMatchName.empty())
         {
             cout << "Feature detector, descriptor extractor, descriptor matcher must be set" << endl;
             return -1;
         }
-        ddmParams = DDMParams( argv[3], argv[4], argv[5] ); // from command line
+        ddmParams = DDMParams( featureDetectName.c_str(), descExtName.c_str(), descMatchName.c_str()); // from command line
         // vocabTrainParams and svmTrainParamsExt is set by defaults
         paramsFS.open( resPath + "/" + paramsFile, FileStorage::WRITE );
         if( paramsFS.isOpened() )
index c93f44c..1bb3f5d 100644 (file)
@@ -1,32 +1,40 @@
+#include "opencv2/core/core.hpp"
 #include "opencv2/video/background_segm.hpp"
 #include "opencv2/highgui/highgui.hpp"
 #include <stdio.h>
 
 using namespace cv;
+using namespace std;
 
 void help()
 {
  printf("\nDo background segmentation, especially demonstrating the use of cvUpdateBGStatModel().\n"
-"Learns the background at the start and then segments.\n"
-"Learning is togged by the space key. Will read from file or camera\n"
-"Call:\n"
-"./  bgfg_segm [file name -- if no name, read from camera]\n\n");
+"       Learns the background at the start and then segments.\n"
+"       Learning is togged by the space key. Will read from file or camera\n"
+"Usage: \n"
+"       ./bgfg_segm [--file_name]=<input file, camera as defautl>\n\n");
 }
 
 //this is a sample for foreground detection functions
-int main(int argc, char** argv)
+int main(int argc, const char** argv)
 {
+    help();
+
+    CommandLineParser parser(argc, argv);
+
+    string fileName = parser.get<string>("file_name", "0");
     VideoCapture cap;
     bool update_bg_model = true;
 
-    if( argc < 2 )
+
+    if(fileName == "0" )
         cap.open(0);
     else
-        cap.open(argv[1]);
-    help();
-    
+        cap.open(fileName.c_str());
+
     if( !cap.isOpened() )
     {
+        help();
         printf("can not open camera or video file\n");
         return -1;
     }