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 :

waitKey et QThread


Sujet :

OpenCV

  1. #1
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut waitKey et QThread
    Bonjour,

    Mon souci est lié à l'utilisation de waitKey() dans un QThread.
    Le code est tout simple, je crée un thread, y encapsule un objet.

    Lorsque le thread démarre ( start() ), la méthode d'affichage de l'objet est appelée :

    Le code dans le main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
             // Création et lancement du thread
            QThread* t = new QThread();
            Displayer* d = new Displayer();
     
            d->moveToThread(t);
     
            QObject::connect(t, SIGNAL(started()), d, SLOT(loopDisplay()));
            t->start();
     
            // On attend pour laisser le temps au thread de tourner
            sleep(10);
    Et le code du slot loopDisplay()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void Displayer::loopDisplay()
    {
        while (1)
        {
            Mat img = imread("../../lena.jpg");
            imshow("lena", img);
            waitKey(100);
        }
    }
    La slot est bien exécuté, car si je fais un affichage dans la console, cela fonctionne. En revanche, le thread semble rester bloqué à l'instruction waitKey(), et la fenêtre avec l'image ne s'affiche jamais.
    Le même code exécuté dans le thread principal fonctionne sans problème.

    Je me demandais donc si la méthode waitKey() avait une quelconque incidence sur le fonctionnement d'un QThread.

    Merci d'avance !

  2. #2
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut
    IL semblerait que les fonctions d'affichage ne fonctionnent pas en dehors du thread principal. Je n'ai pas la confirmation officielle, mais ça semble être le cas pour d'autres librairies.

Discussions similaires

  1. [QThread] QProcess et QSemaphore
    Par slymira dans le forum Multithreading
    Réponses: 11
    Dernier message: 29/11/2007, 11h40
  2. [QThread] QThread qui fait figger le programme
    Par alpha_one_x86 dans le forum Multithreading
    Réponses: 1
    Dernier message: 29/11/2007, 10h16
  3. [QThread] ne marche pas
    Par alpha_one_x86 dans le forum Multithreading
    Réponses: 11
    Dernier message: 23/11/2007, 09h13
  4. [Thread] QThread et QSocket
    Par G3G3 dans le forum Multithreading
    Réponses: 7
    Dernier message: 30/10/2007, 20h25

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