2012-04-06 74 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