我正在开发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格式。
为什么会失败?
提前致谢,
答案 0 :(得分:0)
好的,有时由于处理滞后,可能会丢失帧。但它如此罕见。基本上,当您从文件系统而不是使用VideoCapture的相机读取视频时,它会快速读取帧(但据我所知,它不会跳过帧)。因此,要克服此问题,请尝试在每个帧之间添加延迟。我们在cpp和python中使用waitKey。但我不知道java,我认为可能会使用sleep()。