python 光流计算(更新中)

TVL1算法:
https://blog.csdn.net/weixin_41558411/article/details/89855290
核心函数:

    TVL1 = cv2.DualTVL1OpticalFlow_create()
    flow = TVL1.calc(prev, curr, None)

速度较慢,两张之间的光流图计算耗时大概6-11s左右

Farneback算法
https://github.com/jiangzhubo/extract_optical_flow/blob/master/extractallopt.py
核心函数:

cv2.calcOpticalFlowFarneback(prev, curr, None, 0.5, 3, 15, 3, 5, 1.2, 0)

速度较快,两张之间的光流图计算耗时大概0.1s左右

上面两种方法均只使用CPU运算,未使用GPU加速!所以第一种算法较慢,照理来说可以编译gpu版opencv,不过编译opencv实在是各种报错。不过TVL1算法得到的光流图片与论文中的更加相似,均为灰色的,Farneback就不太像。

通常网络所需要的光流输入如i3d的光流输入的通道数为二通道,而一般网上所使用Farneback算法提取光流后并保存光流的方法如下(先使用Farneback算法提取二通道的光流,然后转换为hsv格式,最后转为bgr格式使用cv2保存下来;但这个过程由于np.minimum是一个不可逆的过程,即保存后的光流bgr图片后续不能转换为我网络所需要的二通道数组;还有由于通过Farneback提取的二通道光流数组为浮点型且还存在负数,这使得无法把二通道的数组直接多加一个通道变为数据类型为uint8的图片数组,浮点型数据将会取整,且负数均为0;再一个直接使用npy保存二通道光流数组,由于视频数据较多&

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值