c++ - 如何在 Haar Cascade 分类过程中查看阳性

标签 c++ opencv cascade haar-wavelet

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

最佳答案

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

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

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

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

祝你好运。

是的,这意味着您要修改源代码。

关于c++ - 如何在 Haar Cascade 分类过程中查看阳性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19917017/

相关文章:

c++ - 使用 OpenCV 中的图像处理技术对商店进行人数统计

c++ - 为什么我的 Qt 应用程序无故崩溃?

c++ - 如何在Eigen中使用Matrix类型参数声明函数?

c# - 想在 asp.net 中使用 c++ 库和 dll

python - cv2.convexityDefects 错误

c++ - OpenCVs LineIterator 在 MATLAB 中的等价物

opencv - 编译 OpenCV 示例 convert_cascade.cpp (OpenCV 2.3)

postgresql - 非唯一列上的 Postgres 级联删除

postgresql - 如何在 PostgreSql 上与 Jooq 级联截断?

c++ - 引用变量存储在哪里