【问题标题】:The video recorded by opencv VideoWriter is not playing at a uniform speedopencv VideoWriter录制的视频播放不匀速
【发布时间】:2019-12-24 19:02:22
【问题描述】:

我用opencv的videowriter录制视频,但是播放视频时,画面并不总是匀速。有时会更快,但稍后会变得正常。例如,如果视频中有一个人在走路,这个人有时会走得很快,但他稍后会放慢速度,然后再走得更快。但实际上,这个人是在匀速行走的。有人可以告诉我如何解决这个问题吗?欢迎任何cmets。谢谢

这是我的记录代码:


def image_callback(msg):
    self.image_queue.put(msg)


fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter("test.avi",fourcc,30,(1280,720))
while (True):
    if(self.image_queue.qsize() > 0):
        out.write(self.image_queue.get())#self.image_queue is a queue which keep storing cv::mat data

【问题讨论】:

    标签: opencv video record


    【解决方案1】:

    认为它就像 VideoWriter 在它获得的每一帧之间放置一个恒定的延迟(在您的情况下为 1000/30 毫秒)。问题是您的图像回调没有以相等的时间间隔获得输入。解决方案可能如下:

    • 测量来自回调的两个图像之间经过的时间(让time_passed 成为此变量,以毫秒为单位)。
    • round(time_passed / (1000/30.)) 帧插入到 VideoWriter。

    如果这看起来也不好,比如有人在某个时刻暂停,您可以提高 FPS 以获得更流畅的结果。无论如何,这种方法在很大程度上依赖于运行时,并且您可能会在 CPU 过载时得到不希望的结果,但是如果没有关于来自回调的图像的先验信息,我没有任何更好的方法。

    【讨论】:

      猜你喜欢
      • 2013-08-05
      • 2023-01-04
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多