IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

[CascadeClassifier] Détection de visage


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut [CascadeClassifier] Détection de visage
    Bonjour à toutes et à tous,

    Je cherche a faire une (classique) détection de visage sur une vidéo. J'utilise les cascade classifier d'opencv et plus particulièrement ce tutoriel ( http://opencv.itseez.com/doc/tutoria...lassifier.html )

    Le code est assez basique, cependant, j'ai un problème tout bête : je n'arrive pas à loader le fichier "haarcascade_frontalface_alt.xml".
    En effet, à l'execution j'ai une exception et un beau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenCv Error : Null pointer (NULL filename) in unknown function
    Je me doute bien qu'il s'agit d'un problème lié à mon fichier à charger et à sont emplacement. J'ai donc essayé en entrant le chemin complet de mon fichier quand j'utilise "cascade.load( file_name )" ou encore de mettre mon fichier dans le même dossier que mon projet.

    Mais rien n'y fait Je sais que c'est un problème mineur mais il m'empeche d'avancer. Si quelqu'un à une idée ou à déjà rencontré ce genre de problème, qu'il n'hésite pas.

    Merci d'avance.
    Cordialement,
    A.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Par défaut
    Salut,

    Tu peux préciser ton arborescence ?
    Dans un de mes exemples qui fonctionne j'ai :

    ... tmp.load( cascadeName ) ...
    avec cascadeName un std::string ayant par exemple pour valeur :
    "../ressourcesSystemeTracking/classifiers/body.xml"

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut
    Salut et Merci pour ta réponse.

    Qu'entends tu par arborescence?
    Si c'est une question à propos de l'endroit où se trouve mon cascade classifier .xml, je l'ai mis dans le dossier même de mon projet donc je ne devrais pas avoir à spécifier le path de mon fichier dans le code.

    Dans le sample que j'essaye de faire marcher c'est fait tout facielement comme ça =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include "opencv2/objdetect/objdetect.hpp"
     #include "opencv2/highgui/highgui.hpp"
     #include "opencv2/imgproc/imgproc.hpp"
     
     #include <iostream>
     #include <stdio.h>
     
     using namespace std;
     using namespace cv;
     
     /** Function Headers */
     void detectAndDisplay( Mat frame );
     
     /** Global variables */
     String face_cascade_name = "haarcascade_frontalface_alt.xml";
     String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
     CascadeClassifier face_cascade;
     CascadeClassifier eyes_cascade;
     string window_name = "Capture - Face detection";
     RNG rng(12345);
     
     /** @function main */
     int main( int argc, const char** argv )
     {
       CvCapture* capture;
       Mat frame;
     
       //-- 1. Load the cascades
       if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
       if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
     
     (suite du programme)
    J'ai également essayé en remplacant le nom du fichier par son path en entier : "C:/opencv/data/haarcascades/haarcascade_frontalface_alt.xml" mais l'erreur du NULL pointer persiste

    Si tu as une idée je suis preneur! Merci de ton aide.
    A.

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Par défaut
    Ah, si tu utilises le code tel quel ce n'est pas une erreur d'emplacement,
    Si l'adresse du fichier xml était mauvaise tu rentrerais dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("--(!)Error loading\n")
    L'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenCv Error : Null pointer (NULL filename) in unknown function
    Doit correspondre à autre chose mais je ne sais pas quoi puisque l'exemple fonctionne sur mon ordinateur.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut
    Citation Envoyé par Jérôme.L Voir le message
    L'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenCv Error : Null pointer (NULL filename) in unknown function
    Doit correspondre à autre chose mais je ne sais pas quoi puisque l'exemple fonctionne sur mon ordinateur.
    Salut et merci pour ton aide et ta patience
    Quand tu dis que le code fonctionne tel quel, tu utilises quelle version d'openCV? (j'ai la 4.0 et non la 4.1 si tant est que les deux soit diiférentes)

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Par défaut
    La dernière version release est la 2.4 d'openCV, j'utilise la version 2.3.1
    Mais le problème ne doit pas venir de la version.
    Je pourrais te passer un projet complet avec le fichier .vcproj et .sln de visual studio seulement avec les .dll l'archive pèse 29mo et je sais pas comment te la poster.
    Je suppose qu'un idiot est venu mettre -1 à tout les messages, alors je vais y mettre +1 pour compenser.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut
    Hop! Merci Jérôme pour ton aide. Grâce à toi j'en suis donc arrivé à la conclusion que la configuration de mon projet VS pour OpenCV devait être bancale vu que le même code tournait chez toi.

    La solution était de passer mes .lib en include en mode Debug (ex: "highgui240d") puisque c'est ce que je faisais mais pour le Release. Et là miracle le .xml se load!

    Par contre, dernière petite question pour toi puisque tu as pu lancer l'exemple du tuto et que tu as l'air de bien travailler avec des cascade classifier :

    Est-ce que la détection de visage était fluide? Parce que moi ca tourne autour de 1Hz Un moyen d'augmenter la vitesse d’exécution de la détection?

    Encore merci,
    A.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détection de visages dans une vidéo
    Par sialamed dans le forum OpenCV
    Réponses: 1
    Dernier message: 17/04/2008, 15h22
  2. Détection de visages
    Par sialamed dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 07/01/2008, 14h47
  3. Détection de visages d'une vidéo
    Par bustaja dans le forum OpenCV
    Réponses: 5
    Dernier message: 25/06/2007, 17h50
  4. Détection de visages dans une image en niveaux de gris
    Par bert_ dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 04/04/2007, 18h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo