使用FFmpeg计算光流大小

问题描述 投票:0回答:1

我正在尝试使用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个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.