Windows 7 Home 64bit
OpenCV 3.1.0
Visual Studio 2013
これまでなぜかCascadeDetectorに存在していたHOG検出器は削除され、使用不可となった。
(ソースは整理されていなく、いくつ残骸が残っている。Type指定でHOGをはねている)
変わりに、OpenCV 3.1でようやくHOGの説明が設けられた。
使い方
ファイルの読み込み、GRAYへの変換、領域の表示は省略cv::HOGDescriptor hog;
hog.setSVMDetector(hog.getDefaultPeopleDetector());
std::vector< cv::Rect > locations;
hog.detectMultiScale(gray, locations);
以上で検出できる。また、detectMultiScaleのパラメータがいくつか省略されており、きちんと書くと
hog.detectMultiScale(gray, locations, 0, cv::Size(), cv::Size(), 1.05, 2, false);
となる。
DefaultPeopleDetectorの辞書は、INRIAのデータで作成されたもので、2.4のころからなぜかソースに辞書データがハードコーディングされている。画像のサイズは、64x128と大きめである。
アニメの人も検出できるが精度はいまひとつ
また、代わりの辞書としてDaimlerPeopleDetectorも提供されており、こちらの画像のおおきさは、48x96で、使用方法は以下の用である。
hog.winSize = cv::Size(48, 96);
hog.setSVMDetector(hog.getDaimlerPeopleDetector()));
さらに、3.1からは、辞書の作成方法もサポートされるようになり、
opencv31\sources\samples\cpp\train_HOG.cpp
を使用すれば自分で辞書を作成することができる。
注意
リリースモードでは、なぜか落ちるのでdebugで使用している。ubuntuで確認してみる以上
0 件のコメント:
コメントを投稿