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

Qt Discussion :

conflit de gestionnaire d'évènements ?


Sujet :

Qt

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut conflit de gestionnaire d'évènements ?
    salut,

    j'utilise conjointement (pour écrire un soft) les bibliothèques Qt pour l'interface graphique ainsi que OpenCV pour effectuer des calculs lourds de traitement d'image. J'utilise certaine fonctions qui sont comprises dans la partie highgui d'OpenCV (cvLoadImage en particulier) mon programme comprend donc des include du type : #include "highgui.h"

    et lorsque j'execute puis referme mon programme (en release), le processus ne disparait pas (dans le gestionnaire d'évènements) et à chaque fois que je le relance il crée un processus de plus.
    en mode debug dans visual j'ai le message d'erreur m'indiquant que l'executable est déjà lancé..

    en effectuant des tests je me suis rendu compte que ce problème disparait si je n'utilise pas de fonctions issues de la partie highgui d'OpenCV.

    est-ce que ça pourrait venir d'un conflit de gestionnaire d'évenement (Qt et OpenCV highgui) ?
    comment remédier à ce problème?

    merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Euh, alors deja qu'entends tu par gestionnaire d'evenements ? Pour moi, un gestionnaire d'evenement, ou "event handler" est quelque chose de bien différent de ce que tu parles. Tu parles sans doute de gestionnaire de taches sous windows.

    Bref, dans tous les cas, opencv peut tres bien fonctionner avec Qt. J'ai fais plusieurs applications utilisant les 2 sans problèmes. Si ton application ne se ferme pas, c'est juste que ton n'application n'est jamais terminée (ce qui est différent de "ne plus voir les fenetres"). Et si ton application ne se termine pas, ca veut dire que tu as potentiellement des objets non détruits, ou des connexions encore ouvertes, ou d'autres choses dans le genre.

    Autant dire que c'est grave !

    Il faut que tu reprennes ton code et que tu vérifies que toutes tes fenetres sont fermées et détruites lorsque tu fermes ton application. Il en va de même pour tes potentiels threads, ils doivent être tous arrêtés, et tous détruits. Et vérifie aussi que tu fermes bien tous les fichiers que tu lis/ecris, ou encore que tu termines bien toutes les connexions à tes périphériques (camera par exemple).

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    le simple fait de ne pas ouvrir l'image avec openCV mais avec Qt règle le problème, il y a donc bien un conflit quelque part.
    à noter que je libère bien les images ouverte avec OpenCV (cvReleaseImage() )

    quand je parlais de gestionnaire d'évènement c'était par rapport à la gui d'OpenCV qui permet notamment l'attente d'interaction utilisateur (cvWaitKey() ), et Qt qui scrute également toute entrée utilisateur à tout moment, enfin ce n'était qu'une supposition

    plutot curieux comme problème

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Il est possible que cvWaitKey() provoque "la persistance" de ton application si tu ne mets pas de timeout. Mais comme il est dit dans la doc de la fonction cvWaitKey(), il est inutile de l'utiliser s'il existe un autre gestionnaire d'évènements.

    Mais bon, rien ne dit que le problème vienne de là. Essaie de mettre des timeouts à tous tes cvWaitKey. Tu sauras déjà si ça vient de là.

    Tu peux aussi nous donner un exemple minimal de ton code reproduisant le problème,pour qu'on puisse le tester.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    la seule présence de cvLoadImage() dans le code (aucun cvWaitKey ) provoque ce problème

    j'ai essayé de créer un projet ultra simple avec un main et une classe Qt chargeant une image via OpenCV, et là je n'ai pas le problème
    je n'y comprend plus rien

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    j'ai essayé de créer un projet ultra simple avec un main et une classe Qt chargeant une image via OpenCV, et là je n'ai pas le problème
    je n'y comprend plus rien
    Si y'a pas de problème, y a pas de solution

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

Discussions similaires

  1. Maj dynamique d'un gestionnaire d'événement
    Par Herode dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2006, 10h15
  2. Gestionnaire d'évènements pour les fichiers sur disque
    Par chourmo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 01/03/2006, 16h18
  3. Gestionnaire d'événements pour la souris en assembleur
    Par bassim dans le forum Assembleur
    Réponses: 2
    Dernier message: 09/12/2005, 23h45
  4. [VBA] Gestionnaire d'évènement commun
    Par Neilos dans le forum Access
    Réponses: 11
    Dernier message: 14/06/2005, 11h18
  5. Perte de gestionnaire d'événements dans une fenêtre
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 15
    Dernier message: 23/08/2004, 20h14

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