c++ - OpenCV,人脸检测,命令理解: stage_sum += classifier->alpha[sum >= t]

标签 c++ opencv

我试图更好地了解 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

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

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

关于c++ - OpenCV,人脸检测,命令理解: stage_sum += classifier->alpha[sum >= t],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9500036/

相关文章:

c++ - 在 C++ 中有条件地从 1..n 或 n..1 迭代

c++ - 对从命令行获取文件名并将其填充到 C++ 感到困惑

c++ - 非实例化模板成员的编译时错误而不是链接时错误

c++ - 如何在OpenGL中将纹理设置为背景?

Python 和 gpu OpenCV 函数

c++ - VS 2010 打开相机但只显示灰色窗口

c++ - g++ -E 选项输出

OpenCV:如何从 Mat 构造 MatND 或 Set MatND 使用 Mat 向量

python - 多 View 特征点的OpenCV Flann匹配

OpenCV自动检测颜色