opencv3/Python 稠密光流calcOpticalFlowFarneback详解


Posted in Python onDecember 11, 2019

光流是由物体或相机的运动引起的图像对象在两个连续帧之间的视在运动模式.光流方法计算在t和 t+Δtt+Δt时刻拍摄的两个图像帧之间的每个像素的运动位置。这些方法被称为差分,因为它们基于图像信号的局部泰勒级数近似; 也就是说,它们使用关于空间和时间坐标的偏导数。

和稀疏光流相比,稠密光流不仅仅是选取图像中的某些特征点(一般用角点)进行计算;而是对图像进行逐点匹配,计算所有点的偏移量,得到光流场,从而进行配准.因此其计算量会显著大于稀疏光流,但效果一般优于稀疏光流.

函数:

def calcOpticalFlowFarneback(prev, next, flow, pyr_scale, levels, winsize, iterations, poly_n, poly_sigma, flags):

使用Gunnar Farneback算法计算密集光流。

相关参数:

prev 输入前一帧图像(8位单通道);

next 输入后一帧图像(与prev大小和类型相同);

flow 计算的流量图像具有与prev相同的大小并为CV_32FC2类型;

pyr_scale 指定图像比例(\ <1)为每个图像构建金字塔; pyr_scale = 0.5意味着一个古典金字塔,其中每个下一层比前一层小两倍。

levels 金字塔层数包括初始图像; levels = 1意味着不会创建额外的图层,只会使用原始图像。

winsize 平均窗口大小;较大的值会增加算法对图像噪声的鲁棒性,并可以检测更快速的运动,但会产生更模糊的运动场。

iterations 每个金字塔等级上执行迭代算法的迭代次数。用于在每个像素中查找多项式展开的像素邻域;

poly_n大小;较大的值意味着图像将近似于更光滑的表面,产生更稳健的算法和更模糊的运动场,一般取poly_n = 5或7。

poly_sigma用于平滑导数的高斯的标准偏差,用作多项式展开的基础;对于poly_n = 5,可以设置poly_sigma = 1.1,对于poly_n = 7,可以设置poly_sigma = 1.5;

flags 操作标志,可取计算方法有:

OPTFLOW_USE_INITIAL_FLOW 使用输入流作为初始流近似。

OPTFLOW_FARNEBACK_GAUSSIAN 使用Gaussian winsize×winsizewinsize×winsize过滤器代替光流估计的相同大小的盒子过滤器;通常情况下,这个选项可以比使用箱式过滤器提供更精确的流量,代价是速度更低;通常,应将高斯窗口的胜利设置为更大的值以实现相同的稳健性水平。

示例:

#!/usr/bin/python
# coding:utf8

import numpy as np
import cv2

step=10

if __name__ == '__main__':
 cam = cv2.VideoCapture(0)
 ret, prev = cam.read()
 prevgray = cv2.cvtColor(prev, cv2.COLOR_BGR2GRAY)

 while True:
 ret, img = cam.read()
 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 # 使用Gunnar Farneback算法计算密集光流
 flow = cv2.calcOpticalFlowFarneback(prevgray, gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
 prevgray = gray
 # 绘制线
 h, w = gray.shape[:2]
 y, x = np.mgrid[step / 2:h:step, step / 2:w:step].reshape(2, -1).astype(int)
 fx, fy = flow[y, x].T
 lines = np.vstack([x, y, x + fx, y + fy]).T.reshape(-1, 2, 2)
 lines = np.int32(lines)

 line = []
 for l in lines:
 if l[0][0]-l[1][0]>3 or l[0][1]-l[1][1]>3:
 line.append(l)

 cv2.polylines(img, line, 0, (0,255,255))
 cv2.imshow('flow', img)

 ch = cv2.waitKey(5)
 if ch == 27:
 break
 cv2.destroyAllWindows()

opencv3/Python 稠密光流calcOpticalFlowFarneback详解

以上这篇opencv3/Python 稠密光流calcOpticalFlowFarneback详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中mechanize库的简单使用示例
Jan 10 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
linux环境中没有网络怎么下载python
Jul 07 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
python3实现无权最短路径的方法
May 12 Python
一劳永逸彻底解决pip install慢的办法
May 24 Python
Python中Selenium对Cookie的操作方法
Jul 09 Python
Python面试不修改数组找出重复的数字
May 20 Python
centos7中安装python3.6.4的教程
Dec 11 #Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 #Python
Python3 中作为一等对象的函数解析
Dec 11 #Python
opencv3/C++图像像素操作详解
Dec 10 #Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 #Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 #Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 #Python
You might like
PHP开发的一些注意点总结
2010/10/12 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
简单实现PHP留言板功能
2016/12/21 PHP
一些常用的JS功能函数代码
2009/06/23 Javascript
JavaScript中获取元素索引的函数
2010/09/10 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
python 字符串和整数的转换方法
2018/06/25 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
python中pyqtgraph知识点总结
2021/01/26 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
庆六一宣传标语
2014/10/08 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
北京故宫的导游词
2015/01/31 职场文书
中国合伙人观后感
2015/06/02 职场文书
未婚证明格式
2015/06/15 职场文书
男生贾里读书笔记
2015/06/30 职场文书