J'ai un problème ici et j'ai besoin de votre aide. J'ai essayé de capturer des coups de clavier en utilisant la fonction cvWaitKey(). cvWaitKey (10) devrait retourner le coup de clavier appuyé toutes les 10ms. Mais dans mon cas, je reçois toutes les 18 secondes, toutes les touches que j'ai appuyées pendant cette période de 18 secondes, à la fois. Et la fenêtre qui devrait normalement se fermer quand j'appuie sur 'esc' (voir le code) est toujours ouverte.ne peut pas capturer les coups de clavier avec cvWaitKey()
Dans la console, je reçois ceci:
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
-1-1-1-1-1-1-1-1-1 -1-1-1-1-1-1-1-1-13536870939-1-1-1-1-1-1-1-1-1-1-1-1-1-1 -1-1-1-1-1-1-1-11536870939-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1 -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1 -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1 -1
Avec:
1536870939 corres étangs à quand j'ai appuyé sur 'esc'
-1 correspondent à quand aucune touche n'a été pressée
Merci pour l'aide.
#include "opencv/cv.h"
#include "opencv/highgui.h"
#include "iostream"
using namespace std;
int main()
{
IplImage *src=cvCreateImage(cvSize(640,480), 8, 3);
CvCapture* capture =cvCaptureFromCAM(CV_CAP_ANY);
int key;
while(1){
src = cvRetrieveFrame(capture);
cvNamedWindow("out", CV_WINDOW_AUTOSIZE);
cvShowImage("out", src);
key = cvWaitKey(10);
cout<<key;
if(key == 1536870939) break; //if 'esc' is pressed (in ubuntu 10.04)
cvGrabFrame(capture);
}
cvDestroyAllWindows();
cvReleaseCapture(&capture);
return 0;
}
J'utilise: OpenCV 2.2.0, ubuntu 10.04 LTS, CodeBlocks 8,02
Pourquoi créez-vous une nouvelle fenêtre sur tous les boucle itération? –