1 #include "opencv2/core/core.hpp"
2 #include "opencv2/core/internal.hpp"
5 #include "cascadeclassifier.h"
9 int main( int argc, char* argv[] )
11 CvCascadeClassifier classifier;
12 string cascadeDirName, vecName, bgName;
16 int precalcValBufSize = 256,
17 precalcIdxBufSize = 256;
18 bool baseFormatSave = false;
20 CvCascadeParams cascadeParams;
21 CvCascadeBoostParams stageParams;
22 Ptr<CvFeatureParams> featureParams[] = { Ptr<CvFeatureParams>(new CvHaarFeatureParams),
23 Ptr<CvFeatureParams>(new CvLBPFeatureParams),
24 Ptr<CvFeatureParams>(new CvHOGFeatureParams)
26 int fc = sizeof(featureParams)/sizeof(featureParams[0]);
29 cout << "Usage: " << argv[0] << endl;
30 cout << " -data <cascade_dir_name>" << endl;
31 cout << " -vec <vec_file_name>" << endl;
32 cout << " -bg <background_file_name>" << endl;
33 cout << " [-numPos <number_of_positive_samples = " << numPos << ">]" << endl;
34 cout << " [-numNeg <number_of_negative_samples = " << numNeg << ">]" << endl;
35 cout << " [-numStages <number_of_stages = " << numStages << ">]" << endl;
36 cout << " [-precalcValBufSize <precalculated_vals_buffer_size_in_Mb = " << precalcValBufSize << ">]" << endl;
37 cout << " [-precalcIdxBufSize <precalculated_idxs_buffer_size_in_Mb = " << precalcIdxBufSize << ">]" << endl;
38 cout << " [-baseFormatSave]" << endl;
39 cascadeParams.printDefaults();
40 stageParams.printDefaults();
41 for( int fi = 0; fi < fc; fi++ )
42 featureParams[fi]->printDefaults();
46 for( int i = 1; i < argc; i++ )
49 if( !strcmp( argv[i], "-data" ) )
51 cascadeDirName = argv[++i];
53 else if( !strcmp( argv[i], "-vec" ) )
57 else if( !strcmp( argv[i], "-bg" ) )
61 else if( !strcmp( argv[i], "-numPos" ) )
63 numPos = atoi( argv[++i] );
65 else if( !strcmp( argv[i], "-numNeg" ) )
67 numNeg = atoi( argv[++i] );
69 else if( !strcmp( argv[i], "-numStages" ) )
71 numStages = atoi( argv[++i] );
73 else if( !strcmp( argv[i], "-precalcValBufSize" ) )
75 precalcValBufSize = atoi( argv[++i] );
77 else if( !strcmp( argv[i], "-precalcIdxBufSize" ) )
79 precalcIdxBufSize = atoi( argv[++i] );
81 else if( !strcmp( argv[i], "-baseFormatSave" ) )
83 baseFormatSave = true;
85 else if ( cascadeParams.scanAttr( argv[i], argv[i+1] ) ) { i++; }
86 else if ( stageParams.scanAttr( argv[i], argv[i+1] ) ) { i++; }
89 for( int fi = 0; fi < fc; fi++ )
91 set = featureParams[fi]->scanAttr(argv[i], argv[i+1]);
101 classifier.train( cascadeDirName,
105 precalcValBufSize, precalcIdxBufSize,
108 *featureParams[cascadeParams.featureType],