14 votes

Comment créer ma propre cascade haar et l'appliquer ?

Je suis intéressé par la création de mon propre fichier xml de cascade haar, à utiliser avec python, pour détecter un certain logo (disons que c'est le logo de la pomme).

J'ai essayé de suivre les instructions à http://docs.opencv.org/trunk/doc/user_guide/ug_traincascade.html et http://note.sonots.com/SciSoftware/haartraining.html

Le problème est que, bien que j'obtienne un fichier cascade valide et fonctionnel, il ne détecte rien. Plus précisément, lorsque j'essaie de détecter l'objet à l'intérieur de l'image originale utilisée pour le créer, il n'est même pas détecté.

J'ai déjà essayé de redimensionner l'image, ou simplement de la placer dans un contexte plus large en l'insérant dans une photo.

qu'est-ce que je fais mal ?

à la coquille, je cours :

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

ce qui semble fonctionner correctement, en créant un fichier en cascade. Puis, en python :

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

et la détection ne donne rien. J'ai essayé de tester avec un xml "standard" fourni avec python et cela fonctionne, donc quelque chose ne va pas avec le mien.

5voto

mid Points 204

J'espère que vous avez trouvé votre réponse maintenant que cela fait 2 ans que vous avez posé votre question ! Quoi qu'il en soit, je vais partager ce que je sais pour toute autre personne qui pourrait avoir la même question. L'un des meilleurs et des plus complets tutoriels sur ce sujet est celui de Codage-Robin et j'ai personnellement beaucoup appris de là. une chose à retenir est que vous ne devriez pas utiliser la même image qui a été impliquée dans la création de la cascade haar, et la raison est qu'elle est simplement déjà classée comme un échantillon positif (ou négatif), donc essayer de la traiter est plutôt inutile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X