-1
votes

arrêter manuellement une vidéo à OpenCV

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;


0 commentaires

3 Réponses :


0
votes
cv::imshow("display", image);
char ch = cv::waitKey(duration);
if (ch == ' ')
    ch = cv::waitKey(0);  // waits until user presses a key

1 commentaires

@nitsan vous avez cvshowimage et cvwaitkey dans else partie. imshow et waitest est C ++ Syntaxe alors que le vôtre est C. Si vous regardez la documentation de WaitKey , 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) est appelé et vous avez ce que vous voulez.



0
votes
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

0 commentaires

0
votes

waitest (0 affichera la fenêtre infiniment jusqu'à ce que n'importe quelle touche (elle convient à l'affichage de l'image).

waitest (25) affichera un cadre pour 25 ms , 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)

voir https: //docs.opencv. org / 2.4 / modules / highgui / doc / user_interface.html? Highlight = Waitkey


0 commentaires