2012-04-06 122 views
3

我想使用基于面向对象(HOG)功能类型的直方图的OpenCV的级联分类 - 例如纸张“使用级联的快速人体检测面向梯度的直方图“OpenCV级联分类与定向梯度直方图(HOG)功能类型

在网上搜索,我发现OpenCV级联分类器只支持HAAR/LBP功能类型(OpenCV Cascade Classification)。

  • 有没有办法在OpenCV级联分类器中使用HOG?你建议什么 ?
  • 有没有可以使用的补丁或其他库?

在此先感谢!

编辑1

我已经把我的搜索,当我终于android-opencv发现,在级联分类主干这使得它能够与HOG功能的工作。但我不知道,如果它的工作原理...

链接:http://code.opencv.org/projects/opencv/repository/revisions/6853

EDIT 2

,因为我的问题已经改变了我没有测试上面的叉。但是我发现了一个有趣的链接,可能在未来非常有用(当我回到这个问题时)。

本页面包含论文“ 人体检测的定向梯度直方图”的源代码。另外,还有更多信息。 http://pascal.inrialpes.fr/soft/olt/

回答

1

它现在似乎也可用于非python代码。 opencv_traincascade 2.4.3具有HOG类型特征的选项(我没有尝试):

[-featureType <{HAAR(default), LBP, HOG}>] 
+0

感谢您的回答。你可以用这个文档指出一个URL吗?我在这个[页面](http://docs.opencv.org/doc/user_guide/ug_traincascade.html)中搜索过,但我想我可能会看错地方。 – Yamaneko 2012-12-18 00:55:22

+0

对不起,我找不到关于此的任何文档。我发布的是我的opencv_traincascade.exe的输出 – tmanthey 2012-12-18 12:21:37

3

如果您使用OpenCV-Python,那么您可以选择使用一些其他库,如scikits.image,这些库具有面向方向渐变内置直方图。

几个月前我不得不解决同样的问题,并在此project page上记录了许多工作(包括HoG的非常基本的Python实现,以及使用PyCUDA的HoG的GPU实现)。那里有可用的代码。 GPU代码应该相当容易修改以便在C++中使用。

+0

谢谢@EMS!这是非常有据可查的。我有两个问题:_1)_您是否执行过“Cascade Classifier”来选择最能代表窗口的HOG特征?如果是肯定的,_2)_你开发了你自己的'Cascade Classifier'还是你修改了OpenCV版本? – Yamaneko 2012-04-07 00:12:24

+0

我没有使用级联分类器,所以我不能帮助。一般来说,我不喜欢OpenCV,更喜欢在Python中使用scikits.learn,所以我的大多数分类器都是基于SVM的。我不确定OpenCV级联分类器接受什么作为输入,但是在Python中计算HoG特征描述符,将它们存储到文本文件,然后操作它们并将它们加载到C++中,可能并不难可以很容易地将它们送入OpenCV。通常情况下,将计算拆分为描述符计算阶段和后续描述符到分类器阶段是比较容易的。 – ely 2012-04-07 00:47:16

+0

现在链接已关闭。我可以请你在Github上发布它吗?谢谢! – 2014-05-22 13:55:37

1

是的,你可以使用cv::CascadeClassifierHOG功能。要做到这一点,只需加载hogcascade_pedestrians.xml,你可以在opencv_src-dir/data/hogcascades找到。

的分类工作速度更快,其结果是当它与hogcascadehaarcascade比较训练有素好得多......

+0

嗨,Alexey!感谢您的回答。哪个OpenCV版本是? – Yamaneko 2015-05-28 16:31:05

+0

我正在使用v2.4.10。 – 2015-07-06 10:32:18