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 :
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
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);
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.
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); } }
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 !
Partager