/* *icvEvalCARTHaarClassifier *作用:通过计算haar特征值,来分配非叶子节点直到出现叶子节点,最后返回输出值val。*/ float icvEvalCARTHaarClassifier( CvIntHaarClassifier* classifier, //内部弱分类器 sum_type* sum, //积分图 sum_type* tilted, //旋转积分图 float normfactor ) //缩放因子 { int idx = 0; do { //通过计算高速haar特征,然后与弱分类器的(阈值*缩放因子)做比較 if( cvEvalFastHaarFeature( ((CvCARTHaarClassifier*) classifier)->fastfeature + idx, sum, tilted ) < (((CvCARTHaarClassifier*) classifier)->threshold[idx] * normfactor) ) { idx = ((CvCARTHaarClassifier*) classifier)->left[idx]; } else { idx = ((CvCARTHaarClassifier*) classifier)->right[idx]; } } while( idx > 0 );//当是非叶子节点时 return ((CvCARTHaarClassifier*) classifier)->val[-idx];//上面循环结束时最后一个是叶子节点(为负数),所以要用-idx。 }