+#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d/features2d.hpp"
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");
}
-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;
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() )
+#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;
}