【问题标题】:manually stop a video in openCV手动停止openCV中的视频
【发布时间】:2020-10-14 14:44:36
【问题描述】:

我收到了一个 OpenCV 代码,它使用图片链接列表显示视频。 我想添加一个在循环的情况下使用键盘键停止视频的选项。 我进行了一些搜索并找到了“WaitKey”功能,但我不确定在我的代码中应该在哪里以及如何使用它。

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;

【问题讨论】:

    标签: c++ c opencv


    【解决方案1】:
    cv::imshow("display", image);
    char ch = cv::waitKey(duration);
    if (ch == ' ')
        ch = cv::waitKey(0);  // waits until user presses a key
    

    【讨论】:

    • @nitsan 你在else 部分有cvShowImage 和cvWaitKey。 imshow 和 waitKey 是 C++ 语法,而您的是 C。如果您查看 waitKey 的文档,它会说当延迟为非正数时,该函数会无限等待关键事件。每当您按下暂停按钮(答案中的空格键)时,都会调用 waitKey(0) 并得到您想要的。
    【解决方案2】:
    if cv2.waitKey(1) & 0xFF == ord("q"):
                    break
    
    • 将其放入第一个 while 循环中
    • 这将在按“q”程序停止执行后帮助您

    【讨论】:

      【解决方案3】:

      waitKey(0 将无限显示窗口,直到有任何按键(适用于图像显示)。

      waitKey(25) 将为25 ms 显示一个框架,之后显示将自动关闭。 (如果你把它放在循环中读取视频,它会逐帧显示视频)

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

      【讨论】:

        猜你喜欢
        • 2018-12-05
        • 1970-01-01
        • 2016-04-13
        • 2016-12-16
        • 2021-05-23
        • 1970-01-01
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多