From e5c5a1cb3d80aa5b61a2595e9bf51b58c41fb32b Mon Sep 17 00:00:00 2001 From: Maria Dimashova Date: Fri, 17 Dec 2010 14:24:59 +0000 Subject: [PATCH] fixed traincascade --- modules/traincascade/boost.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/modules/traincascade/boost.cpp b/modules/traincascade/boost.cpp index 363d30c5ca..d65004b78a 100644 --- a/modules/traincascade/boost.cpp +++ b/modules/traincascade/boost.cpp @@ -445,22 +445,30 @@ void CvCascadeBoostTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* o *ordValues = ordValuesBuf; } -const int* CvCascadeBoostTrainData::get_cat_var_data( CvDTreeNode* n, int vi, int* catValuesBuf) +const int* CvCascadeBoostTrainData::get_cat_var_data( CvDTreeNode* n, int vi, int* catValuesBuf ) { - int nodeSampleCount = n->sample_count; + int nodeSampleCount = n->sample_count; int* sampleIndicesBuf = catValuesBuf; // const int* sampleIndices = get_sample_indices(n, sampleIndicesBuf); if ( vi < numPrecalcVal ) - { - for( int i = 0; i < nodeSampleCount; i++ ) + { + for( int i = 0; i < nodeSampleCount; i++ ) catValuesBuf[i] = (int) valCache.at( vi, sampleIndices[i]); - } - else - { - for( int i = 0; i < nodeSampleCount; i++ ) - catValuesBuf[i] = (int)(*featureEvaluator)( vi, sampleIndices[i] ); - } + } + else + { + if( vi >= numPrecalcVal && vi < var_count ) + { + for( int i = 0; i < nodeSampleCount; i++ ) + catValuesBuf[i] = (int)(*featureEvaluator)( vi, sampleIndices[i] ); + } + else + { + get_cv_labels( n, catValuesBuf ); + } + } + return catValuesBuf; }