从时间上获取视频帧(openCV)

时间:2015-11-12 08:35:45

标签: c++ algorithm opencv image-processing

我有一段视频,我在这段视频中有重要时刻 例如:

    "frameTime1": "00:00:01.00"
    "frameTime2": "00:00:02.50"
    "frameTime2": "00:00:03.99"
    .
    .
    .

我得到 FPS ,我得到 totalFrameCount

如果我想在那个时间内获得帧,例如在这段时间内发生的帧" frameTime2":" 00:00: 02.50" 我将执行以下代码

FrameIndex = (Time*FPS)/1000; //1000 Because 1 second = 100 milli second

在这种情况下 00:00:02.50 = 2500 毫秒, FPS = 29 所以在这种情况下 FrameIndex 72.5 ,在这种情况下我会选择frameNO:72或73,但我觉得这不够准确,更好溶液

最佳准确的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以随心所欲地使用 帧时间。当你说事件发生在2500毫秒时,这个时间从何而来?为什么它与您的帧率不一致?您只有2483毫秒和2517毫秒的视频数据点,没有办法解决这个问题。

如果您正在跟踪视频上的对象,并且您希望其位置在t = 2500,那么您可以从已知数据点插入位置。您可以通过在相邻帧之间进行线性插值,或者可能通过在对象轨迹上拟合曲线并求解目标时间来实现。

如果你想在t = 2500时重建一个完整的框架,那么它会更加复杂,仍然是一个开放的问题。