2012-11-26 10 views
10

私は自分のhaar cascade xmlファイルを、Pythonで使用するために、特定のロゴを検出するために作成することに興味があります(これはAppleのロゴです)。私自身のhaarカスケードを作成して適用するにはどうすればいいですか?

私は私が有効に機能するカスケードファイルを取得するが、それは何も検出されない、 http://docs.opencv.org/trunk/doc/user_guide/ug_traincascade.htmlhttp://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でテストしようとしましたが、それはうまくいくので、私は何かが間違っています。

+0

ロゴの検出を実際に行っている場合、ロゴの形状は通常一定であるため、抽出された特徴はよく一致するはずですので、SIFT/SURF/ORB/MSERを使用して特徴の抽出とマッチングを行うことをおすすめします。私のoppionionでhaarの機能を持つロゴの検出は非常に奇妙なdo.Because通常のロゴは、他のオブジェクト(顔、目、鼻など)のようなopencvを介して訓練するのに十分な機能がありません。ロゴは通常、エッジとコーナーでいっぱいです。しかし、私はあなたの結果についても聞きたい。 – isrish

+0

-w 48 -h 48は非常に多くのようです。 (デフォルトは24です)。小さな値を試してみましたか?それは、 '内部サイズ'であり、createsamplesステージのロゴのサイズではありません – berak

答えて

2

あなたの質問をしてから2年経った今、あなたの答えが見つかったことを願っています!とにかく私は同じ質問をするかもしれない誰かのために私が知っていることを分かち合うでしょう。この問題に関するベストと完全に説明されたチュートリアルの1つはCoding-Robinであり、私はそこから多くのことを個人的に学びました。忘れてはならないのは、ハールカスケードの作成に含まれていたのと同じイメージを使用すべきではないということです。なぜならそれは単純に既に正の(または負の)サンプルとして分類されているからです。

関連する問題