2016-12-17 3 views
1

Dans OpenCV, si je n'inclue pas la ligne Cv2.WaitKey(1) dans la boucle d'affichage pour les images capturées, aucune image n'est affichée à l'écran. La même chose se produit sur C++, phyton ou C#.OpenCV - Aucune image affichée sans waitkey dans la boucle de capture

Quelle serait la cause de cela, et existe-t-il une autre option?

Cet exemple est en C# (opencvsharp):

VideoCapture cap = new VideoCapture(); 

Window w = new Window();  

cap.Open("animation.avi"); 

while (cap.Read(src)) { 
    Cv2.WaitKey(1); 
    w.ShowImage(src); 
} 
+0

@Rama Cela ressemble plus à pourquoi vous avez besoin de l'appeler pour voir une image. Je pense qu'il sait ce qu'il fait par lui-même –

Répondre

2

Techniquement highgui nécessite waitkey() d'être appelé afin d'obtenir le temps de mettre à jour la fenêtre.

De OpenCV documents faisant référence à la fonction imshow() (ShowImage en C#):

Cette fonction doit être suivie par la fonction waitKey qui affiche l'image pour les millisecondes spécifiées. Sinon, il n'affichera pas l'image . Par exemple, waitKey (0) affichera la fenêtre à l'infini jusqu'à ce que vous appuyiez sur une touche (elle est adaptée à l'affichage de l'image). waitKey (25) affichera un cadre pendant 25 ms, après quoi l'affichage sera automatiquement fermé. (Si vous le mettez dans une boucle pour lire des vidéos, il afficher l'image par image vidéo) fonction (WaitKey() en C#)

Et waitKey() sur:

Cette fonction est la Seule la méthode dans HighGUI peut extraire et gérer les événements , elle doit donc être appelée périodiquement pour le traitement des événements normaux sauf si HighGUI est utilisé dans un environnement qui prend en charge le traitement des événements .

+0

Pourriez-vous fournir un lien ou une référence de la documentation OpenCV citée? – Rama

+0

http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html?highlight=waitkey –

+0

Ceci est spécifique à OpenCV 3.1.0: http://docs.opencv.org/trunk/d7/dfc /group__highgui.html#ga5628525ad33f52eab17feebcfba38bd7 –