gpt4 book ai didi

c++ - haar cascade for face detection xml文件代码讲解OpenCV

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:07 25 4
gpt4 key购买 nike

我正在使用 opencv haar 级联执行人脸检测。

我想知道我在我的程序中包含的haar级联的xml代码的解释。有人可以帮助我理解 XML 文件中显示的值,例如:weakcountmaxcountthresholdinternal nodes叶值

我使用了 haarcascade_frontalface_alt2.xml 文件。我已经进行了人脸检测。目前我正在计算检测到的面孔数量。

最佳答案

据我了解,一般来说,您已经了解 haarcascade 结构及其 OpenCV 实现。如果没有,请先查看OpenCV manual并阅读有关提升树级联的内容,例如 Lienhart's paper .

现在关于 xml 结构本身。

<maxWeakCount>3</maxWeakCount>

该参数描述了该阶段简单分类器(树)的数量。

<stageThreshold>3.5069230198860168e-01</stageThreshold>

它是阶段阈值,i。 e.该阶段退出级联的阈值分数。在所有阶段,我们从树计算最终分数,当最终分数小于阈值时,我们退出整个级联并将结果视为非对象。

<weakClassifiers>

阶段中树参数的开始。

<_>
<internalNodes>
0 1 0 4.3272329494357109e-03 -1 -2 1 1.3076160103082657e-02
</internalNodes>
<leafValues>
3.8381900638341904e-02 8.9652568101882935e-01 2.6293140649795532e-01
</leafValues>
</_>

这是树的描述。 internalNodes参数包含以下内容:

  • 0 11 0 定义我们应该去的当前节点中的叶索引。在第一种情况下,如果值低于阈值,我们就转到左边;如果值高于阈值,我们就转到右边;在第二种情况下,如果值高于阈值,我们就转到右叶。
  • 特征索引
  • 选择叶子的阈值
  • 还有一个 -1 -2 1 ... 参数列表 - 正如我从 OpenCV 源中看到的那样,它只是另一个具有叶索引的节点,但根据评估代码忽略负值(也来自 OpenCV 来源)。

考虑级联评估代码:

do
{
CascadeClassifierImpl::Data::DTreeNode& node = cascadeNodes[root + idx];
double val = featureEvaluator(node.featureIdx);
idx = val < node.threshold ? node.left : node.right;
}
while( idx > 0 );

leafValues 包含左值(即左叶得分)、右值(右叶得分)和树阈值。

<_>
<rects>
<_>
6 3 1 9 -1.</_>
<_>
6 6 1 3 3.</_></rects></_>
<_>

它是根据 HAAR 范式描述特征本身。上一节的特征索引描述了 rects 对的索引。

关于c++ - haar cascade for face detection xml文件代码讲解OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com