Boring changes - apps.
This commit is contained in:
parent
eaa7fcc3e6
commit
34af7eeb84
@ -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…
x
Reference in New Issue
Block a user