0

大家,我已经在 Opencv 中训练了我自己的分类器,当我运行它时会得到一种不好的结果。我的目标是使用 Haar 特征作为指导,所以我不想在执行整个级联分类器之后而是在每个步骤中,在每个特征之后查看积极因素。那么,是否可以告诉检测器在该特征处停止,或者我是否必须手动截断包含特征阈值的 xml 文件?谢谢

4

1 回答 1

1

有可能的。只需检查如何CascadeClassifier::detectMultiScale工作。在此功能中您可以检查this->data.stages.size(),它将显示级联有多少个阶段。

特别是detectMultiScalecall detectSingleScale,然后它调用CascadeClassifierInvoker's operator(),我们看到那里 int result = classifier->runAt(evaluator, Point(x, y), gypWeight);行。

因此,如果result大于零,这意味着分类成功并经过了所有阶段。否则(如果我没记错的话)结果将等于-[number of stage]分类器失败。所以你可以看到确切的阶段分类器没有通过。

此外,如果您使用旧式级联,请注意detectMultiScale调用cvHaarDetectObjectsForROC, not detectSingleScale,但本质上它会做同样的事情。

祝你好运。

是的,这意味着你要修改源。

于 2013-11-12T13:07:03.040 回答