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的异常处理
Jun 19 Python
Python给你的头像加上圣诞帽
Jan 04 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
python dlib人脸识别代码实例
Apr 04 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
opencv python如何实现图像二值化
Feb 03 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
如何使用 Flask 做一个评论系统
Nov 27 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 explode函数实例代码
2012/02/27 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
php建立Ftp连接的方法
2015/03/07 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
javascript RegExp 使用说明
2016/05/21 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
小程序实现留言板
2018/11/02 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python关闭占用端口方式
2019/12/17 Python
关于python中的xpath解析定位
2020/03/06 Python
Python dict的常用方法示例代码
2020/06/23 Python
会议开场欢迎词
2014/01/15 职场文书
护理专业自荐信范文
2015/03/06 职场文书
小学同学聚会感言
2015/07/30 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
bat批处理之字符串操作的实现
2022/03/16 Python