/*
*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。
}