大家,我已经在 Opencv 中训练了我自己的分类器,当我运行它时会得到一种不好的结果。我的目标是使用 Haar 特征作为指导,所以我不想在执行整个级联分类器之后而是在每个步骤中,在每个特征之后查看积极因素。那么,是否可以告诉检测器在该特征处停止,或者我是否必须手动截断包含特征阈值的 xml 文件?谢谢
问问题
538 次
1 回答
1
有可能的。只需检查如何CascadeClassifier::detectMultiScale
工作。在此功能中您可以检查this->data.stages.size()
,它将显示级联有多少个阶段。
特别是detectMultiScale
call 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 回答