2012-11-26 14 views
10

Ich bin daran interessiert, meine eigene Haarkaskade-XML-Datei zu erstellen, um mit Python ein bestimmtes Logo zu erkennen (sagen wir, es ist das Apple-Logo).Wie erstelle ich meine eigene Haarkaskade und wende sie an?

Ich habe versucht, nach den Anweisungen auf http://docs.opencv.org/trunk/doc/user_guide/ug_traincascade.html und http://note.sonots.com/SciSoftware/haartraining.html

Problem ist, obwohl ich eine gültige funktionierende Kaskade-Datei zu erhalten, ist es nicht etwas zu erkennen. insbesondere, wenn ich versuche, das Objekt innerhalb des Originalbildes zu erkennen, mit dem es erstellt wurde, wird es selbst dann nicht erkannt.

Ich habe bereits versucht, das Bild zu verkleinern oder es einfach in einen größeren Kontext zu setzen, indem ich es in ein Bild einfüge.

was mache ich falsch?

bei Shell, ich laufe:

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 

, die gut zu funktionieren scheint, eine Kaskade-Datei erstellen. Dann in Python:

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

und die Erkennung kommt leer. Ich habe versucht, mit einem "Standard" -Xml zu testen, das mit Python kommt und es funktioniert, also stimmt etwas nicht mit meinem.

+0

Wenn Sie wirklich Logo-Erkennung tun, empfehle ich für Merkmale Extraktion und Anpassung mit SIFT/SURF/ORB/MSER .. da Logo Formen sind in der Regel konstant die extrahierten Merkmale sollten gut übereinstimmen. In meiner Meinung wird Logo-Erkennung mit Haar Features sehr seltsam zu tun sein.Weil in der Regel Logos hat nicht genug Funktionen durch opencv wie andere Objekte (Gesicht, Augen, Nase usw.) trainiert werden. Logos sind normalerweise voller Kanten und Ecken. Aber ich möchte auch von Ihren Ergebnissen hören. – isrish

+0

-w 48 -h 48 scheint ziemlich viel. (Standard ist 24). Hast du kleinere Werte probiert? Es ist die "interne Größe", nicht die Größe Ihres Logos in der Musterphase – berak

Antwort

2

Ich hoffe, Sie haben jetzt Ihre Antwort gefunden, dass es 2 Jahre her ist, seit Sie Ihre Frage gestellt haben! Jedenfalls teile ich das, was ich weiß, für jeden anderen, der dieselbe Frage haben könnte. Eines der besten und vollständig erklärten Tutorials zu diesem Thema ist von Coding-Robin und ich habe persönlich sehr viel von dort gelernt. Eine Sache, an die Sie sich erinnern sollten, ist, dass Sie nicht dasselbe Bild verwenden sollten, das an der Erstellung der Haar-Kaskade beteiligt war. Der Grund ist, dass es einfach bereits als positive (oder negative) Probe klassifiziert wird.

Verwandte Themen