From 7f32e8131d1b3dcc478ba6427a0bda33aca99f5d Mon Sep 17 00:00:00 2001
From: itsyplen <no@email>
Date: Wed, 10 Aug 2011 08:56:27 +0000
Subject: [PATCH] Updating samples using cmd parser

---
 samples/cpp/bgfg_segm.cpp        | 29 ++++++++++++-----
 samples/cpp/brief_match_test.cpp | 53 ++++++++++++++++----------------
 2 files changed, 48 insertions(+), 34 deletions(-)

diff --git a/samples/cpp/bgfg_segm.cpp b/samples/cpp/bgfg_segm.cpp
index c93f44c5b..f41716532 100644
--- a/samples/cpp/bgfg_segm.cpp
+++ b/samples/cpp/bgfg_segm.cpp
@@ -1,7 +1,9 @@
+#include "opencv2/core/core.hpp"
 #include "opencv2/video/background_segm.hpp"
 #include "opencv2/highgui/highgui.hpp"
 #include <stdio.h>
 
+using namespace std;
 using namespace cv;
 
 void help()
@@ -9,22 +11,33 @@ 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");
+"Usage: \n"
+"			./bgfg_segm [--camera]=<use camera, if this key is present>, [--file_name]=<path to movie file> \n\n");
 }
 
-//this is a sample for foreground detection functions
-int main(int argc, char** argv)
+const char* keys = 
 {
+	"{c |camera   |false    | use camera or not}"
+	"{fn|file_name|tree.avi | movie file             }"
+};
+
+//this is a sample for foreground detection functions
+int main(int argc, const char** argv)
+{
+	help();
+
+	CommandLineParser parser(argc, argv, keys);
+	bool useCamera = parser.get<bool>("camera");
+	string file = parser.get<string>("file_name");
     VideoCapture cap;
     bool update_bg_model = true;
 
-    if( argc < 2 )
+    if( useCamera )
         cap.open(0);
     else
-        cap.open(argv[1]);
-    help();
-    
+		cap.open(file.c_str());
+	parser.printParams();
+
     if( !cap.isOpened() )
     {
         printf("can not open camera or video file\n");
diff --git a/samples/cpp/brief_match_test.cpp b/samples/cpp/brief_match_test.cpp
index 5c491dac2..1e6813ba8 100644
--- a/samples/cpp/brief_match_test.cpp
+++ b/samples/cpp/brief_match_test.cpp
@@ -4,6 +4,7 @@
  *  Created on: Oct 17, 2010
  *      Author: ethan
  */
+#include "opencv2/core/core.hpp"
 #include "opencv2/calib3d/calib3d.hpp"
 #include "opencv2/features2d/features2d.hpp"
 #include "opencv2/imgproc/imgproc.hpp"
@@ -12,20 +13,7 @@
 #include <iostream>
 
 using namespace cv;
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::vector;
-
-void help(char **av)
-{
-	   cerr << "usage: " << av[0] << " im1.jpg im2.jpg"
-			   << "\n"
-			   << "This program shows how to use BRIEF descriptor to match points in features2d\n"
-			   << "It takes in two images, finds keypoints and matches them displaying matches and final homography warped results\n"
-			   << endl;
-}
+using namespace std;
 
 //Copy (x,y) location of descriptor matches found from KeyPoint data structures into Point2f vectors
 void matches2points(const vector<DMatch>& matches, const vector<KeyPoint>& kpts_train,
@@ -53,25 +41,38 @@ double match(const vector<KeyPoint>& /*kpts_train*/, const vector<KeyPoint>& /*k
   return ((double)getTickCount() - t) / getTickFrequency();
 }
 
-
-
-int main(int ac, char ** av)
+void help()
 {
-  if (ac != 3)
-  {
-	help(av);
-    return 1;
-  }
-  string im1_name, im2_name;
-  im1_name = av[1];
-  im2_name = av[2];
+	   printf ("This program shows how to use BRIEF descriptor to match points in features2d\n"
+			   "It takes in two images, finds keypoints and matches them displaying matches and final homography warped results\n"
+				"Usage: \n"
+					"image1 image2 \n"
+				"Example: \n"
+					"box.png box_in_scene.png \n");	   
+}
+
+const char* keys = 
+{
+	"{1|  |box.png               |the first image}"
+	"{2|  |box_in_scene.png|the second image}"
+};
+
+int main(int argc, const char ** argv)
+{
+
+  help();
+  CommandLineParser parser(argc, argv, keys);
+  string im1_name = parser.get<string>("1");
+  string im2_name = parser.get<string>("2");
 
   Mat im1 = imread(im1_name, CV_LOAD_IMAGE_GRAYSCALE);
   Mat im2 = imread(im2_name, CV_LOAD_IMAGE_GRAYSCALE);
 
   if (im1.empty() || im2.empty())
   {
-    cerr << "could not open one of the images..." << endl;
+    printf( "could not open one of the images...\n");
+	printf("the cmd parameters have next current value: \n");
+	parser.printParams();
     return 1;
   }