【问题标题】:Get the frame from Video by the time (openCV)按时间从视频中获取帧(openCV)
【发布时间】:2016-02-13 12:42:27
【问题描述】:

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

    "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 所以本例中的FrameIndex72.5,本例中我会选择frameNO: 72或73,但我觉得不够准确,有没有更好的解决方案? p>

做到这一点的最佳准确方法是什么?

【问题讨论】:

  • 我认为 1 秒是 1000 毫秒
  • 是的,当然谢谢 ;)。
  • 为什么需要这些框架?如果您必须检查某些重要事件,最好同时获取两个帧。

标签: c++ algorithm opencv image-processing


【解决方案1】:

您可以使用的最准确的东西帧时间。当你说一个事件发生在 2500ms 时,这个时间是从哪里来的呢?为什么它与您的帧率不一致?您只有 2483 毫秒和 2517 毫秒的视频数据点,没有办法。

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

如果你想在 t=2500 重建一个完整的帧,那么它会复杂得多,而且仍然是一个悬而未决的问题。

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    相关资源
    最近更新 更多