14

特定のロゴ(アップルのロゴだとしましょう)を検出するために、Pythonで使用する独自のhaarカスケードxmlファイルを作成することに興味があります。

http://docs.opencv.org/trunk/doc/user_guide/ug_traincascade.html および http://note.sonots.com/SciSoftware/haartraining.htmlの指示に従ってみました

問題は、有効に機能しているカスケード ファイルを取得しても、何も検出されないことです。具体的には、作成に使用された元の画像内のオブジェクトを検出しようとすると、それでも検出されません。

すでに画像のサイズを変更したり、画像に挿入してより大きなコンテキストに配置したりしました.

私は何を間違っていますか?

シェルで、次を実行します。

opencv_createsamples -img original.jpg -bg negatives.dat -vec samples_set.vec  -w 48 -h 48

opencv_traincascade -bg negatives.dat -data mycascade -vec samples_set.vec -w 48 -h 48

カスケードファイルを作成して、うまくいくようです。次に、Pythonで:

import cv2
cascade2 = cv2.CascadeClassifier('mycascade.xml')
cv2Image = cv2.imread('original.jpg')
cascade2.detectMultiScale(cv2Image)

検出は空になります。Pythonに付属の「標準」xmlでテストしようとしましたが、動作するため、何か問題があります。

4

1 に答える 1

5

質問をしてから 2 年が経ちましたが、答えが見つかったことを願っています。とにかく、同じ質問をしている可能性のある他の人のために、私が知っていることを共有します. この問題に関する最もよく説明されたチュートリアルの 1 つはCoding-Robinからのもので、個人的にはそこから多くのことを学びました。覚えておくべきことの 1 つは、haar カスケードの作成に関与したのと同じ画像を使用しないことです。その理由は、既にポジティブ (またはネガティブ) サンプルとして分類されているため、処理しようとしてもほとんど役に立たないからです。

于 2015-08-23T17:16:47.120 に答える