Boring changes - apps.

pull/1281/head
Roman Donchenko 12 years ago
parent eaa7fcc3e6
commit 34af7eeb84
  1. 34
      apps/traincascade/cascadeclassifier.cpp
  2. 6
      apps/traincascade/traincascade.cpp

@ -159,10 +159,10 @@ bool CvCascadeClassifier::train( const string _cascadeDirName,
cascadeParams = _cascadeParams; cascadeParams = _cascadeParams;
featureParams = CvFeatureParams::create(cascadeParams.featureType); featureParams = CvFeatureParams::create(cascadeParams.featureType);
featureParams->init(_featureParams); featureParams->init(_featureParams);
stageParams = new CvCascadeBoostParams; stageParams = makePtr<CvCascadeBoostParams>();
*stageParams = _stageParams; *stageParams = _stageParams;
featureEvaluator = CvFeatureEvaluator::create(cascadeParams.featureType); featureEvaluator = CvFeatureEvaluator::create(cascadeParams.featureType);
featureEvaluator->init( (CvFeatureParams*)featureParams, numPos + numNeg, cascadeParams.winSize ); featureEvaluator->init( featureParams, numPos + numNeg, cascadeParams.winSize );
stageClassifiers.reserve( numStages ); stageClassifiers.reserve( numStages );
} }
cout << "PARAMETERS:" << endl; cout << "PARAMETERS:" << endl;
@ -206,10 +206,10 @@ bool CvCascadeClassifier::train( const string _cascadeDirName,
break; break;
} }
CvCascadeBoost* tempStage = new CvCascadeBoost; Ptr<CvCascadeBoost> tempStage = makePtr<CvCascadeBoost>();
bool isStageTrained = tempStage->train( (CvFeatureEvaluator*)featureEvaluator, bool isStageTrained = tempStage->train( featureEvaluator,
curNumSamples, _precalcValBufSize, _precalcIdxBufSize, curNumSamples, _precalcValBufSize, _precalcIdxBufSize,
*((CvCascadeBoostParams*)stageParams) ); *stageParams );
cout << "END>" << endl; cout << "END>" << endl;
if(!isStageTrained) if(!isStageTrained)
@ -325,7 +325,7 @@ void CvCascadeClassifier::writeParams( FileStorage &fs ) const
void CvCascadeClassifier::writeFeatures( FileStorage &fs, const Mat& featureMap ) const void CvCascadeClassifier::writeFeatures( FileStorage &fs, const Mat& featureMap ) const
{ {
((CvFeatureEvaluator*)((Ptr<CvFeatureEvaluator>)featureEvaluator))->writeFeatures( fs, featureMap ); featureEvaluator->writeFeatures( fs, featureMap );
} }
void CvCascadeClassifier::writeStages( FileStorage &fs, const Mat& featureMap ) const void CvCascadeClassifier::writeStages( FileStorage &fs, const Mat& featureMap ) const
@ -339,7 +339,7 @@ void CvCascadeClassifier::writeStages( FileStorage &fs, const Mat& featureMap )
sprintf( cmnt, "stage %d", i ); sprintf( cmnt, "stage %d", i );
cvWriteComment( fs.fs, cmnt, 0 ); cvWriteComment( fs.fs, cmnt, 0 );
fs << "{"; fs << "{";
((CvCascadeBoost*)((Ptr<CvCascadeBoost>)*it))->write( fs, featureMap ); (*it)->write( fs, featureMap );
fs << "}"; fs << "}";
} }
fs << "]"; fs << "]";
@ -350,7 +350,7 @@ bool CvCascadeClassifier::readParams( const FileNode &node )
if ( !node.isMap() || !cascadeParams.read( node ) ) if ( !node.isMap() || !cascadeParams.read( node ) )
return false; return false;
stageParams = new CvCascadeBoostParams; stageParams = makePtr<CvCascadeBoostParams>();
FileNode rnode = node[CC_STAGE_PARAMS]; FileNode rnode = node[CC_STAGE_PARAMS];
if ( !stageParams->read( rnode ) ) if ( !stageParams->read( rnode ) )
return false; return false;
@ -371,12 +371,9 @@ bool CvCascadeClassifier::readStages( const FileNode &node)
FileNodeIterator it = rnode.begin(); FileNodeIterator it = rnode.begin();
for( int i = 0; i < min( (int)rnode.size(), numStages ); i++, it++ ) for( int i = 0; i < min( (int)rnode.size(), numStages ); i++, it++ )
{ {
CvCascadeBoost* tempStage = new CvCascadeBoost; Ptr<CvCascadeBoost> tempStage = makePtr<CvCascadeBoost>();
if ( !tempStage->read( *it, (CvFeatureEvaluator *)featureEvaluator, *((CvCascadeBoostParams*)stageParams) ) ) if ( !tempStage->read( *it, featureEvaluator, *stageParams) )
{
delete tempStage;
return false; return false;
}
stageClassifiers.push_back(tempStage); stageClassifiers.push_back(tempStage);
} }
return true; return true;
@ -453,7 +450,7 @@ void CvCascadeClassifier::save( const string filename, bool baseFormat )
fs << "{"; fs << "{";
fs << ICV_HAAR_FEATURE_NAME << "{"; fs << ICV_HAAR_FEATURE_NAME << "{";
((CvHaarEvaluator*)((CvFeatureEvaluator*)featureEvaluator))->writeFeature( fs, tempNode->split->var_idx ); ((CvHaarEvaluator*)featureEvaluator.get())->writeFeature( fs, tempNode->split->var_idx );
fs << "}"; fs << "}";
fs << ICV_HAAR_THRESHOLD_NAME << tempNode->split->ord.c; fs << ICV_HAAR_THRESHOLD_NAME << tempNode->split->ord.c;
@ -499,7 +496,7 @@ bool CvCascadeClassifier::load( const string cascadeDirName )
if ( !readParams( node ) ) if ( !readParams( node ) )
return false; return false;
featureEvaluator = CvFeatureEvaluator::create(cascadeParams.featureType); featureEvaluator = CvFeatureEvaluator::create(cascadeParams.featureType);
featureEvaluator->init( ((CvFeatureParams*)featureParams), numPos + numNeg, cascadeParams.winSize ); featureEvaluator->init( featureParams, numPos + numNeg, cascadeParams.winSize );
fs.release(); fs.release();
char buf[10]; char buf[10];
@ -510,11 +507,10 @@ bool CvCascadeClassifier::load( const string cascadeDirName )
node = fs.getFirstTopLevelNode(); node = fs.getFirstTopLevelNode();
if ( !fs.isOpened() ) if ( !fs.isOpened() )
break; break;
CvCascadeBoost *tempStage = new CvCascadeBoost; Ptr<CvCascadeBoost> tempStage = makePtr<CvCascadeBoost>();
if ( !tempStage->read( node, (CvFeatureEvaluator*)featureEvaluator, *((CvCascadeBoostParams*)stageParams )) ) if ( !tempStage->read( node, featureEvaluator, *stageParams ))
{ {
delete tempStage;
fs.release(); fs.release();
break; break;
} }
@ -531,7 +527,7 @@ void CvCascadeClassifier::getUsedFeaturesIdxMap( Mat& featureMap )
for( vector< Ptr<CvCascadeBoost> >::const_iterator it = stageClassifiers.begin(); for( vector< Ptr<CvCascadeBoost> >::const_iterator it = stageClassifiers.begin();
it != stageClassifiers.end(); it++ ) it != stageClassifiers.end(); it++ )
((CvCascadeBoost*)((Ptr<CvCascadeBoost>)(*it)))->markUsedFeaturesInMap( featureMap ); (*it)->markUsedFeaturesInMap( featureMap );
for( int fi = 0, idx = 0; fi < varCount; fi++ ) for( int fi = 0, idx = 0; fi < varCount; fi++ )
if ( featureMap.at<int>(0, fi) >= 0 ) if ( featureMap.at<int>(0, fi) >= 0 )

@ -18,9 +18,9 @@ int main( int argc, char* argv[] )
CvCascadeParams cascadeParams; CvCascadeParams cascadeParams;
CvCascadeBoostParams stageParams; CvCascadeBoostParams stageParams;
Ptr<CvFeatureParams> featureParams[] = { Ptr<CvFeatureParams>(new CvHaarFeatureParams), Ptr<CvFeatureParams> featureParams[] = { makePtr<CvHaarFeatureParams>(),
Ptr<CvFeatureParams>(new CvLBPFeatureParams), makePtr<CvLBPFeatureParams>(),
Ptr<CvFeatureParams>(new CvHOGFeatureParams) makePtr<CvHOGFeatureParams>()
}; };
int fc = sizeof(featureParams)/sizeof(featureParams[0]); int fc = sizeof(featureParams)/sizeof(featureParams[0]);
if( argc == 1 ) if( argc == 1 )

Loading…
Cancel
Save