小编Ben*_*agy的帖子

根据光流计算发散度和旋度并将其绘制出来

我使用flow = cv2.calcOpticalFlowFarneback()来计算视频中的光流,它为我提供了一个形状为 (height, width, 2) 的 numpy 数组,其中包含每个像素的FxFy值 ( flow[: ,:,0] = Fx流量[:,:,1] = Fy )。

为了计算散度,我使用 np.gradient ,如下所示:

def divergence_npgrad(flow):
    Fx, Fy = flow[:, :, 0], flow[:, :, 1]
    F = [Fx, Fy]
    d = len(F)
    return np.ufunc.reduce(np.add, [np.gradient(F[i], axis=i) for i in range(d)])
Run Code Online (Sandbox Code Playgroud)

接下来,我要计算旋度。我知道sympy.physicals.vector中有一个curl函数,但我真的不明白它是如何工作的或者它如何应用于我的流程。所以我想我也可以使用 np.gradient 来实现这一点。在 2D 中,我需要计算每个像素的dFy/dx - dFx/dy,所以我会这样:

def curl_npgrad(flow):
    Fx, Fy = flow[:, :, 0], flow[:, :, 1]
    dFx_dy = np.gradient(Fx, …
Run Code Online (Sandbox Code Playgroud)

python opencv numpy matplotlib

4
推荐指数
1
解决办法
1021
查看次数

标签 统计

matplotlib ×1

numpy ×1

opencv ×1

python ×1