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实现随机密码字典生成器示例
Apr 09 Python
python执行外部程序的常用方法小结
Mar 21 Python
使用Python的判断语句模拟三目运算
Apr 24 Python
Python实现把json格式转换成文本或sql文件
Jul 10 Python
Python可变参数用法实例分析
Apr 02 Python
Python查看微信撤回消息代码
Jun 07 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python线程定时器Timer实现原理解析
Nov 30 Python
DataFrame.to_excel多次写入不同Sheet的实例
Dec 02 Python
python 使用cx-freeze打包程序的实现
Mar 14 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
ThinkPHP之getField详解
2014/06/20 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
详解vue路由
2020/08/05 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
python的内存管理和垃圾回收机制详解
2019/05/18 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
python3.7调试的实例方法
2020/07/21 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
电子邮箱格式怎么写
2014/01/12 职场文书
社区健康教育工作方案
2014/06/03 职场文书
横幅标语大全
2014/06/17 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2014年底工作总结
2014/12/15 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
员工自我评价范文
2015/03/11 职场文书
廉政承诺书范文
2015/04/28 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
linux中nohup和后台运行进程查看及终止
2021/06/24 Python