C++ 按时间从视频中获取帧(openCV)

C++ 按时间从视频中获取帧(openCV),c++,algorithm,opencv,image-processing,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)

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

    "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,但我觉得这不够精确,有更好的解决方案吗


做这件事的最好的准确的方法是什么?

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

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


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

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