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 :

Callback de on_mouse


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 31
    Par défaut Callback de on_mouse
    Bonjour,

    Je suis sous XCode où je fais un projet mixte Objective-C C++.

    J'execute le projet test de openCV nommé Camshiftdemo sans problème.

    Comme dans le projet Camshiftdemo, je veux utiliser la fonction cvSetMouseCallback

    j'obtiens une erreur du type Classes/Threading: (classname:(void*)' does not match `void (*)(void*)'

    Dans mon projet, j'ai créé une class SeekPattern dans laquel j'ai la methode Seek() qui est charger d'executer cvSetMouseCallback

    et la méthode on_mouse est passé en paramètre de cvSetMouseCallback

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cvSetMouseCallback( "CamShiftDemo", on_mouse, 0 );
    Or cette ligne me renvoie l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /Users/azman/Documents/SDK/SonOfGrab/SeekPattern.h:106:0 /Users/azman/Documents/SDK/SonOfGrab/SeekPattern.h:106: error: argument of type 'void (SeekPattern::)(int, int, int, int, void*)' does not match 'void (*)(int, int, int, int, void*)'
    Je ne vois pas comment résoudre ce problème étant donné que le même code fonctionne si je ne crée pas de classe...

    merci pour votre aide

  2. #2
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    j'ai la methode Seek() qui est charger d'executer cvSetMouseCallback
    C'est une callback appelé sur l'event de la souris donc ce n'est pas à toi de l'executer, elle s'execute d'elle même

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 31
    Par défaut
    Citation Envoyé par snowpy Voir le message
    C'est une callback appelé sur l'event de la souris donc ce n'est pas à toi de l'executer, elle s'execute d'elle même
    Oui, j'ai bien compris mais la méthode cvSetMouseCallback ne veut pas prendre ma méthode on_mouse en paramètre et provoque une erreur car il semble que la signature de la méthode on_mouse ne soit pas la bonne depuis que on_mouse est intégrée à ma classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void (SeekPattern::)(int, int, int, int, void*)' does not match 'void (*)(int, int, int, int, void*)'
    J'ai recherché une solution vers le reinterpret_cast operator mais sans succès... je sèche !

  4. #4
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    montre la déclaration

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    Pareil pour moi :

    void Calib :: my_mouse_callback(int event, int x, int y, int flags, void* param){
    ....
    }

    int Calib :: calibrationProcess()
    {
    char c;
    cvSetMouseCallback("Color Calibration", my_mouse_callback, (void*) imgCalib);
    while(1){
    ....
    }

    Erreur : error: argument of type ‘void (Calib:(int, int, int, int, void*)’ does not match ‘void (*)(int, int, int, int, void*)’

    Help plzzz

  6. #6
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void on_mouse( int event, int x, int y, int flags,void* param=NULL)
    .
    .
    .
    cvSetMouseCallback("CamShiftDemo", on_mouse);

Discussions similaires

  1. Fonction callback
    Par saibe dans le forum Linux
    Réponses: 4
    Dernier message: 19/01/2012, 10h41
  2. [Débutant] fonction CALLBACK
    Par tlt dans le forum MFC
    Réponses: 2
    Dernier message: 29/10/2004, 16h55
  3. Callback
    Par el_diablos dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2004, 08h48
  4. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42
  5. [MFC] Un callback dans des MFC ...
    Par elsargento dans le forum MFC
    Réponses: 3
    Dernier message: 18/02/2004, 16h04

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