如何在自定义检测算法中使用级联分类器?

时间:2013-04-23 08:54:49

标签: opencv machine-learning computer-vision classification

所以,我创建了自己的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的得分。对不起困惑

2 个答案:

答案 0 :(得分:2)

关于对象检测的opencv doc之后,您必须创建级联检测器对象并::加载要应用的级联(您生成的xml文件)。 :: detectMultiScale用于通过滑动不同比例和大小的窗口并合并高度自信的近似样本,从当前帧填充检测到的对象的std :: vector。

代码here! 同一问题已回答here

答案 1 :(得分:1)

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