opencv-python DIS光流

# -牧野- 2021-05-29
import cv2
from flowlib import flow_to_image
import numpy as np

def warp_flow(img, flow):
    h, w = flow.shape[:2]
    flow = -flow
    flow[:,:,0] += np.arange(w)
    flow[:,:,1] += np.arange(h)[:,np.newaxis]
    res = cv2.remap(img, flow, None, cv2.INTER_LINEAR)
    return res

img0_path = 'im1.png'
img1_path = 'im3.png'

img0 = cv2.imread(img0_path)
img1 = cv2.imread(img1_path)

img0_gray = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)
img1_gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)

dis = cv2.DISOpticalFlow_create(2)  #PRESET_ULTRAFAST, PRESET_FAST and PRESET_MEDIUM
flow0 = dis.calc(img0_gray, img1_gray, None, )
flow1 = dis.calc(img1_gray, img0_gray, None, )

img1_warp = warp_flow(img0, flow0)
img0_warp = warp_flow(img1, flow1)

flow0_img = flow_to_image(flow0)
flow1_img = flow_to_image(flow1)

cv2.imwrite('flow0.jpg', flow0_img)
cv2.imwrite('flow1.jpg', flow1_img)
cv2.imwrite('im3_warp.jpg', img1_warp)
cv2.imwrite('im1_warp.jpg', img0_warp)

引用的flowlib.py文件见https://github.com/liruoteng/OpticalFlowToolkit/blob/master/lib/flowlib.py

输入图像:

 

0:PRESET_ULTRAFAST 1:PRESET_FAST   2:PRESET_MEDIUM对应结果:

warp结果:

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值