mat*_*tsu 1 python opencv scikit-image
我有两个图像(frame1和frame2),我可以使用opencv计算u,v:
flow = cv2.calcOpticalFlowFarneback(prvs,next, 0.5, 1, 3, 15, 3, 5, 1, 0)
Run Code Online (Sandbox Code Playgroud)
我想使用这个u来翻译frame1,v使用各种光流方法量化差异的质量.我打算用这些来推断你,v.
有没有一种简单的方法来实现这一目标?
计算简单转换的一种方法是平均流量:
avg_u = np.mean(flow[:, :, 0])
avg_v = np.mean(flow[:, :, 1])
Run Code Online (Sandbox Code Playgroud)
这给出了(avg_u, avg_v)翻译所需的向量.
关于您的注释,似乎您希望将每个像素移动(x,y)到其流向量指定的位置(u(x,y), v(x,y)).
首先,生成笛卡尔网格:
height, width = flow.shape[0, 1]
R2 = np.dstack(np.meshgrid(np.arange(width), np.arange(height)))
Run Code Online (Sandbox Code Playgroud)
然后,所需的映射只是添加此网格的流程:
pixel_map = R2 + flow
Run Code Online (Sandbox Code Playgroud)
最后,执行cv2.remap:
new_frame = cv2.remap(prev_frame, pixel_map)
Run Code Online (Sandbox Code Playgroud)