J'ai un code OPENCV qui m'a été donné et il affiche une vidéo à l'aide d'une liste liée des images. Je tiens à ajouter à elle la possibilité d'arrêter la vidéo en cas de boucle, à l'aide d'une touche de clavier. J'ai fait des recherches et je suis arrivé à la fonctionnalité "Waitest", mais je ne suis pas sûr d'où et comment je suis censé l'utiliser dans mon code.
cvNamedWindow("Display window", CV_WINDOW_AUTOSIZE); //create a window
FrameNode* head = list;
int imgNum = 1, playCount = 0;
IplImage* image;
while (playCount < GIF_REPEAT)
{
while (list != 0)
{
image = cvLoadImage(list->frame->path, 1);
IplImage* pGrayImg = 0;
pGrayImg = cvCreateImage(cvSize(image->width, image->height), image->depth, 1);
if (!image) //The image is empty - shouldn't happen since we checked already.
{
printf("Could not open or find image number %d", imgNum);
}
else
{
cvShowImage("Display window", image); //display the image
cvWaitKey(list->frame->duration); //wait
list = list->next;
cvReleaseImage(&image);
}
imgNum++;
}
list = head; // rewind
playCount++;
}
cvDestroyWindow("Display window");
return;
3 Réponses :
cv::imshow("display", image);
char ch = cv::waitKey(duration);
if (ch == ' ')
ch = cv::waitKey(0); // waits until user presses a key
@nitsan vous avez cvshowimage code> et cvwaitkey code> dans else code> partie. imshow code> et waitest code> est C ++ Syntaxe alors que le vôtre est C. Si vous regardez la documentation de WaitKey code> , il dit que la fonction attend un événement clé infiniment lorsque le retard n'est pas positif. Chaque fois que vous appuyez sur la touche PAUSE (touche spatiale de la réponse), waitkey (0) code> est appelé et vous avez ce que vous voulez.
if cv2.waitKey(1) & 0xFF == ord("q"):
break
put this inside 1st while loop
This will help you after pressing 'q' the program stop execution
voir https: //docs.opencv. org / 2.4 / modules / highgui / doc / user_interface.html? Highlight = Waitkey P> waitest (0 code> affichera la fenêtre infiniment jusqu'à ce que n'importe quelle touche (elle convient à l'affichage de l'image). P>
waitest (25) code> affichera un cadre pour 25 ms code>, après quoi l'affichage sera automatiquement fermé. (Si vous le mettez dans une boucle pour lire des vidéos, il affichera le cadre vidéo) P>