如何获取VideoCapture::read得到的帧的PTS或帧号?

How to get the PTS or frame number of the frame got by VideoCapture::read?

在我们的实现中,我们需要知道OpenCV解码后的帧的pts或者frame-number,然后在解码帧的基础上做一些处理之后,再构建一个pts或者frame-number之间的映射原始流和处理结果。

查了OpenCV VideoCaptureI/F,没找到这种方法

OpenCV 视频接口没有公开很多关于视频流的细节。它旨在成为一个便于抓取帧的高级接口,它不提供对编解码器低级信息的访问。

VideoCapture::read 返回的帧只是图像,它们不包含有关视频的任何信息(如帧编号)。您需要单独手动保存该信息。

如果您从文件的开头开始解码,您可以只对从 VideoCapture::read.

返回的成功解码的帧使用整数计数器

然后是VideoCapture::get,你可以通过它访问CV_CAP_PROP_POS_MSECCV_CAP_PROP_POS_FRAMESCV_CAP_PROP_FPS,这与你可以通过OpenCV接口访问PTS一样近.