2 #include "cascadeclassifier.h"
6 int main( int argc, char* argv[] )
8 CvCascadeClassifier classifier;
9 String cascadeDirName, vecName, bgName;
13 int precalcValBufSize = 256,
14 precalcIdxBufSize = 256;
15 bool baseFormatSave = false;
17 CvCascadeParams cascadeParams;
18 CvCascadeBoostParams stageParams;
19 Ptr<CvFeatureParams> featureParams[] = { Ptr<CvFeatureParams>(new CvHaarFeatureParams),
20 Ptr<CvFeatureParams>(new CvLBPFeatureParams),
21 Ptr<CvFeatureParams>(new CvHOGFeatureParams)
23 int fc = sizeof(featureParams)/sizeof(featureParams[0]);
26 cout << "Usage: " << argv[0] << endl;
27 cout << " -data <cascade_dir_name>" << endl;
28 cout << " -vec <vec_file_name>" << endl;
29 cout << " -bg <background_file_name>" << endl;
30 cout << " [-numPos <number_of_positive_samples = " << numPos << ">]" << endl;
31 cout << " [-numNeg <number_of_negative_samples = " << numNeg << ">]" << endl;
32 cout << " [-numStages <number_of_stages = " << numStages << ">]" << endl;
33 cout << " [-precalcValBufSize <precalculated_vals_buffer_size_in_Mb = " << precalcValBufSize << ">]" << endl;
34 cout << " [-precalcIdxBufSize <precalculated_idxs_buffer_size_in_Mb = " << precalcIdxBufSize << ">]" << endl;
35 cout << " [-baseFormatSave]" << endl;
36 cascadeParams.printDefaults();
37 stageParams.printDefaults();
38 for( int fi = 0; fi < fc; fi++ )
39 featureParams[fi]->printDefaults();
43 for( int i = 1; i < argc; i++ )
46 if( !strcmp( argv[i], "-data" ) )
48 cascadeDirName = argv[++i];
50 else if( !strcmp( argv[i], "-vec" ) )
54 else if( !strcmp( argv[i], "-bg" ) )
58 else if( !strcmp( argv[i], "-numPos" ) )
60 numPos = atoi( argv[++i] );
62 else if( !strcmp( argv[i], "-numNeg" ) )
64 numNeg = atoi( argv[++i] );
66 else if( !strcmp( argv[i], "-numStages" ) )
68 numStages = atoi( argv[++i] );
70 else if( !strcmp( argv[i], "-precalcValBufSize" ) )
72 precalcValBufSize = atoi( argv[++i] );
74 else if( !strcmp( argv[i], "-precalcIdxBufSize" ) )
76 precalcIdxBufSize = atoi( argv[++i] );
78 else if( !strcmp( argv[i], "-baseFormatSave" ) )
80 baseFormatSave = true;
82 else if ( cascadeParams.scanAttr( argv[i], argv[i+1] ) ) { i++; }
83 else if ( stageParams.scanAttr( argv[i], argv[i+1] ) ) { i++; }
86 for( int fi = 0; fi < fc; fi++ )
88 set = featureParams[fi]->scanAttr(argv[i], argv[i+1]);
98 classifier.train( cascadeDirName,
102 precalcValBufSize, precalcIdxBufSize,
105 *featureParams[cascadeParams.featureType],