我知道 ffmpeg 可以从命令行执行此操作,并且几乎可以肯定它也可以从 C++ 代码执行此操作。但是在 C++ OpenCV3 或 OpenCV2 中是否有任何简单的方法可以仅从视频文件关键帧中获取?
在 video.set(CV_CAP_PROP_POS_FRAMES)
以这种方式工作之前:位置是“最近的关键帧”,但现在它是“固定的”,我无法找到仅以一种可能的方式处理关键帧的方法(出于性能目的):
- 第一种方式:
read()
下一个关键帧(如 JavaCVFFmpegFrameGrabber.grabKeyFrame()
) grab()
第二种方式:对每一帧进行快速工作,检查它的属性(哪一个?),如果是关键帧,则进行慢速工作retrieve()
。