0

因此,我创建了自己的 HoG 特征提取器和一个简单的滑动窗口算法,其伪代码如下所示:

for( int i = 0; i < img.rows; i++ ) {
   for( int j = 0; j < img.cols; j++ ) {
     extract image ROI from the current position
     calculate features for the ROI
     feed the features into svm.predict() function, to determine whether it's human or not
   }
}

然而,由于它非常慢(尤其是当你包含不同的尺度时),我决定在我的正样本和负样本上使用 openv_traincascade 命令训练一些级联分类器。

opencv_traincascade 为我提供了 cascade.xml、params.xml 和一些 stage.xml 文件

我的问题是如何在我的检测循环中利用这个训练有素的级联分类器?

编辑:不,不是detectMultiScale。我使用级联分类器的原因只是为了加快对非对象的检测,我仍然需要使用自己的算法来计算可能的 ROI 的分数。对困惑感到抱歉

4

2 回答 2

2

按照关于对象检测的 opencv文档,您必须创建级联检测器对象并 ::load 要应用的级联(您生成的 xml 文件)。::detectMultiScale 用于通过滑动不同比例和大小的窗口并合并高置信度的接近样本来填充当前帧中检测到的对象的 std::vector。

代码在这里同样的问题在这里回答?

于 2013-04-23T09:27:18.557 回答
1

为了使用级联分类器,您必须调用该CascadeClassifier::load函数(将生成的 XML 文件的路径作为参数传递)。每当您想检查感兴趣的对象是否存在时,您都应该调用CascadeClassifier::detectorCascadeClassifier::detectMultiScale函数。

于 2013-04-23T09:11:30.943 回答