OpenCV VideoCapture无法读取所有帧

时间:2016-07-04 10:01:30

标签: java opencv video frames

我正在开发Java版OpenCV中的视频处理算法。我使用以下功能来阅读视频文件:

    VideoCapture camera = new VideoCapture(video_path);

    if (!camera.isOpened())
        System.out.println("Cannot open file");

    else
    {

        while (true) {
            boolean frameSuccess = camera.read(currentFrame);
            framecount ++;
            System.out.printf("frame: %d", framecount);
            if (frameSuccess != true)
            {   
                break;
            }

然后我逐个处理帧。

问题在于显然,该计划"跳过"帧。可变帧计数不对应于视频的实际帧数。视频采用webm格式。

为什么会失败?

提前致谢,

1 个答案:

答案 0 :(得分:0)

好的,有时由于处理滞后,可能会丢失帧。但它如此罕见。基本上,当您从文件系统而不是使用VideoCapture的相机读取视频时,它会快速读取帧(但据我所知,它不会跳过帧)。因此,要克服此问题,请尝试在每个帧之间添加延迟。我们在cpp和python中使用waitKey。但我不知道java,我认为可能会使用sleep()。