/*
 *icvEvalCARTHaarClassifier
 *作用:通过计算haar特征,来分配非叶子节点直到出现叶子节点
 */
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。
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/ding977921830/article/details/46785701