J'ai un problème ici et j'ai besoin de votre aide. J'ai essayé de capturer les traits du clavier à partir d'une fenêtre créée en utilisant la fonction cvWaitKey(). La fonction fonctionne très bien si je l'appelais cvWaitKey du même thread qui a créé la fenêtre, mais quand je crée la fenêtre d'un fil et appelle cvWaitKey() d'un autre thread, il ne retourne pas la bonne clé, il bloque pour cvWaitKey (0) et renvoie -1 pour tout délai d'attente supérieur à zéro.OpenCV: Comment utiliser cvWaitKey() forme un autre thread que celui créé la fenêtre?
0
A
Répondre
1
Oui, cela ne peut pas fonctionner. cvWaitKey() est implémentée en appelant la fonction API PeekMessage(). Cela peut uniquement voir les messages dans la file d'attente de messages associée au thread. Le thread que vous avez créé n'a aucune fenêtre.
Il n'y a pas de solution évidente pour cela, vous devez appeler sur le fil qui a créé la fenêtre. Appeler GetAsyncKeyState() pourrait fonctionner, une approche très différente cependant.
0
Dans votre "autre" thread, vous pouvez définir une variable partagée à true ou false (ou une valeur) et faire le "thread de fenêtre" le vérifie avant de décider d'appeler cvWaitKey() dans sa portée locale.
Questions connexes
- 1. Utiliser NSString dans un autre fichier que celui dans lequel il a été créé
- 2. "procédure de fenêtre" d'un thread nouvellement créé sans fenêtre
- 3. OpenCV Appel multi-thread
- 4. Comment déterminer quel thread est créé à partir d'un autre?
- 5. Appeler une fenêtre forment un autre thread (.Net)
- 6. exécuter la fonction dans un autre thread que gui
- 7. Comment utiliser un contrôle similaire à celui de la fenêtre Détails de classe de Visual Studio
- 8. Comment puis-je appeler un gestionnaire d'événements à partir d'un thread distinct de celui sur lequel il a été créé?
- 9. Comment puis-je corriger l'erreur "accédé à partir d'un thread autre que le thread sur lequel il a été créé"?
- 10. Opération croisée pas valide: Contrôle accédé à partir d'un thread autre que le thread sur lequel il a été créé
- 11. Comment supprimer un thread d'un autre thread dans Java?
- 12. CakePHP 1.2: Comment verrouiller un contrôleur donné à partir d'un accès autre que celui des administrateurs?
- 13. Comment interrompre un autre thread à partir d'un moniteur Thread
- 14. Perl - Comment utiliser un processus Handle créé dans un module dans un autre script Perl
- 15. DoDragDrop() d'un autre thread
- 16. Comment créer un serveur lié avec un port autre que celui par défaut
- 17. Comment arrêter un thread lorsque la fenêtre se ferme et
- 18. Comment obtenir un processus de fenêtre IE8 nouvellement créé?
- 19. Réglage Form.Owner à une forme d'un autre thread
- 20. Existe-t-il un moyen de créer un processus créé par CreateProcess dans une autre fenêtre?
- 21. Pourquoi un contrôle serait-il sur un thread différent de celui dans lequel je travaille?
- 22. Fonction C run dans un autre thread
- 23. Puis-je envoyer un formulaire POST dans un encodage autre que celui de son corps?
- 24. Que fait exactement ce programme OpenCV?
- 25. autre forme soumettre la question
- 26. arrêt thread courant jusqu'à ce que l'entrée est reçue d'une autre fenêtre WPF C#
- 27. Comment utiliser EmguCV (OpenCV en C#)?
- 28. Accès à un objet créé dans une autre classe
- 29. utiliser la classe dans une autre forme de Windows C#?
- 30. Comment utiliser cvLoadImage pour charger dans OpenCV Window?
Merci Hans pour votre réponse. Je serais reconnaissant de bien vouloir vous expliquer plus en détail comment surmonter une telle situation à l'aide GetAsyncKeyState() –
while (GetAsyncKeyState (VK_ESCAPE)> = 0) Sommeil (50); –