【问题标题】:Use FFmpeg to calculate Optical Flow magnitude使用 FFmpeg 计算光流大小
【发布时间】:2020-04-01 21:19:47
【问题描述】:

我正在尝试使用FFmpeg 来计算短视频中的总光流值(或运动值)。有没有命令可以做到这一点?如果速度更快,也愿意接受任何替代方法。

我目前正在使用 PythonopenCV 来做到这一点:

def getOpticalMag(prev_image, curr_image):

    prev_image_gray = cv2.cvtColor(prev_image, cv2.COLOR_BGR2GRAY)
    curr_image_gray = cv2.cvtColor(curr_image, cv2.COLOR_BGR2GRAY)

    flow = cv2.calcOpticalFlowFarneback(prev_image_gray, curr_image_gray, flow=None,
                                        pyr_scale=0.5, levels=1, winsize=15,
                                        iterations=2,
                                        poly_n=5, poly_sigma=1.1, flags=0)
    mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])

    return np.mean(mag)

【问题讨论】:

    标签: video ffmpeg video-processing cv2 opticalflow


    【解决方案1】:

    您正在寻找的是直接从编码的视频流中提取运动矢量。 FFmpeg 没有为此提供接口。这个 git https://github.com/jishnujayakumar/MV-Tractus 可能很有趣。

    另一方面,因为您正在寻找平均运动。您可以调整输入图像的大小(下采样 2 或 4 倍)和/或使用更快的方法,如 DIS 流。另一种优化策略是使用金字塔 Lucas Kanade 方法计算非常稀疏网格的运动向量。

    【讨论】:

      猜你喜欢
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2014-07-07
      • 2016-10-18
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      相关资源
      最近更新 更多