CV_IMPL int cvRunHaarClassifierCascade( CvHaarClassifierCascade* _cascade, CvPoint pt, int start_stage ) { int result = -1; CV_FUNCNAME(”cvRunHaarClassifierCascade”);
__BEGIN__;
int p_offset, pq_offset; int i, j; double mean, variance_norm_factor; CvHidHaarClassifierCascade* cascade;
sum = calc_sum(node->feature.rect[0],p_offset) * node->feature.rect[0].weight; sum += calc_sum(node->feature.rect[1],p_offset) * node->feature.rect[1].weight;
a = classifier->alpha[0]; b = classifier->alpha[1]; stage_sum += sum < t ? a : b; } } else { for( j = 0; j < cascade->stage_classifier[i].count; j++ ) { CvHidHaarClassifier* classifier = cascade->stage_classifier[i].classifier + j; CvHidHaarTreeNode* node = classifier->node; double sum, t = node->threshold*variance_norm_factor, a, b;
sum = calc_sum(node->feature.rect[0],p_offset) * node->feature.rect[0].weight; sum += calc_sum(node->feature.rect[1],p_offset) * node->feature.rect[1].weight;
if( node->feature.rect[2].p0 ) sum += calc_sum(node->feature.rect[2],p_offset) * node->feature.rect[2].weight;
a = classifier->alpha[0]; b = classifier->alpha[1]; stage_sum += sum < t ? a : b; } }