我试图通过设置CV_CAP_PROP_POS_FRAMES属性跳转到特定的框架,然后像这样读取框架:
cvSetCaptureProperty( input_video, CV_CAP_PROP_POS_FRAMES, current_frame );
frame = cvQueryFrame( input_video );
Run Code Online (Sandbox Code Playgroud)
我面临的问题是,OpenCV 2.1为12个连续值返回相同的帧,current_frame而我想读取每个单独的帧,而不仅仅是关键帧.谁能告诉我有什么问题?
我做了一些研究,发现问题是由解压缩算法引起的.
类似MPEG的算法(包括HD等)不会分别压缩每个帧,而是不时地保存关键帧,然后只保存最后一帧和后续帧之间的差异.
您报告的问题是由于,当您选择一个帧时,解码器(可能是ffmpeg)会自动前进到下一个关键帧.
那么,有没有办法解决这个问题呢?我不只想要关键帧,而是每个帧.