私は自分のhaar cascade xmlファイルを、Pythonで使用するために、特定のロゴを検出するために作成することに興味があります(これはAppleのロゴです)。私自身のhaarカスケードを作成して適用するにはどうすればいいですか?
私は私が有効に機能するカスケードファイルを取得するが、それは何も検出されない、 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でテストしようとしましたが、それはうまくいくので、私は何かが間違っています。
ロゴの検出を実際に行っている場合、ロゴの形状は通常一定であるため、抽出された特徴はよく一致するはずですので、SIFT/SURF/ORB/MSERを使用して特徴の抽出とマッチングを行うことをおすすめします。私のoppionionでhaarの機能を持つロゴの検出は非常に奇妙なdo.Because通常のロゴは、他のオブジェクト(顔、目、鼻など)のようなopencvを介して訓練するのに十分な機能がありません。ロゴは通常、エッジとコーナーでいっぱいです。しかし、私はあなたの結果についても聞きたい。 – isrish
-w 48 -h 48は非常に多くのようです。 (デフォルトは24です)。小さな値を試してみましたか?それは、 '内部サイズ'であり、createsamplesステージのロゴのサイズではありません – berak