OpenCV , 人脸检测 , 命令理解 : stage_sum += 分类器->alpha[总和 >= t]

OpenCV , Face Detection , command understanding : stage_sum += classifier->alpha[sum >= t]

本文关键字:gt 分类器 总和 alpha sum 命令 检测 OpenCV stage      更新时间:2023-10-16

我正在努力更好地理解openCV的人脸检测实现。

我在haar.cpp文件上看到了这个命令:

stage_sum += classifier->alpha[sum >= t];

不知怎么的,我搞不懂这个命令的含义,我知道+=是什么意思,alpha[sum >= t ]是什么意思?

减速是这样的:

    double t ,sum ; 
    float stage_sum ; 
    CvHidHaarClassifier* classifier;
    typedef struct CvHidHaarClassifier
    {
        int count;
        //CvHaarFeature* orig_feature;
        CvHidHaarTreeNode* node;
        float* alpha;
    }
    typedef struct CvHidHaarFeature
    {
        struct
        {
            sumtype *p0, *p1, *p2, *p3;
            float weight;
        }
        rect[CV_HAAR_FEATURE_MAX];
    }
    CvHidHaarFeature;

    typedef struct CvHidHaarTreeNode
    {
        CvHidHaarFeature feature;
        float threshold;
        int left;
        int right;
    }
    CvHidHaarTreeNode;

术语

sum >= t

根据sum是否大于/等于t,返回1或0。这个值(0或1)被用作数组分类器->alpha[](只有两个条目)的索引。

t是在训练(弱)分类器期间学习的阈值。在测试期间(即,对图像位置进行分类,无论它是否是人脸),针对每个弱分类器测试sum的值是否大于阈值t,并且根据这一点,将不同的值添加到stage_sum