cvCalcOpticalFlowPyrLK的使用

【OpenCV函数详解之cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_params)】 cv2.calcOpticalFlowPyrLK() 是 OpenCV 库中用于计算两幅图像之间稀疏光流(Sparse Optical Flow)的方法之一。光流是指图像中物体在不同时间点的位置移动。这个函数通过 Lucas-Kanade 方法来跟踪图像中的关键点(feature points)在后续帧中的位置。需要传入前一帧和当前图像以及前一帧检测到的角点,用于获得光流检测后的角点位置。 阅读详情

计算一个稀疏特征集的光流,使用金字塔中的迭代 Lucas-Kanade 方法

void cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr, CvArr* prev_pyr, CvArr* curr_pyr,
                             const CvPoint2D32f* prev_features, CvPoint2D32f* curr_features,
                             int count, CvSize win_size, int level, char* status,
                             float* track_error, CvTermCriteria criteria, int flags );
prev
在时间 t 的第一帧
curr
在时间 t + dt 的第二帧
prev_pyr
第一帧的金字塔缓存. 如果指针非 NULL , 则缓存必须有足够的空间来存储金字塔从层 1 到层 #level 的内容。尺寸 (image_width+8)*image_height/3 比特足够了
curr_pyr
与 prev_pyr 类似, 用于第二帧
prev_features
需要发现光流的点集
curr_features
包含新计算出来的位置的 点集
count
特征点的数目
win_size
每个金字塔层的搜索窗口尺寸
level
最大的金字塔层数。如果为 0 , 不使用金字塔 (即金字塔为单层), 如果为 1 , 使用两层,下面依次类推。
status
数组。如果对应特征的光流被发现,数组中的每一个元素都被设置为 1, 否则设置为 0。
error
双精度数组,包含原始图像碎片与移动点之间的差。为可选参数,可以是 NULL .
criteria
准则,指定在每个金字塔层,为某点寻找光流的迭代过程的终止条件。
flags
其它选项:
  • CV_LKFLOW_PYR_A_READY , 在调用之前,第一帧的金字塔已经准备好
  • CV_LKFLOW_PYR_B_READY , 在调用之前,第二帧的金字塔已经准备好
  • CV_LKFLOW_INITIAL_GUESSES , 在调用之前,数组 B 包含特征的初始坐标 (Hunnish: 在本节中没有出现数组 B,不知是指的哪一个)

函数 cvCalcOpticalFlowPyrLK 实现了金字塔中 Lucas-Kanade 光流计算的稀疏迭代版本 ([Bouguet00])。 它根据给出的前一帧特征点坐标计算当前视频帧上的特征点坐标。 函数寻找具有子象素精度的坐标值。

两个参数 prev_pyr 和 curr_pyr 都遵循下列规则: 如果图像指针为 0, 函数在内部为其分配缓存空间,计算金字塔,然后再处理过后释放缓存。 否则,函数计算金字塔且存储它到缓存中,除非设置标识 CV_LKFLOW_PYR_A[B]_READY 。 图像应该足够大以便能够容纳 Gaussian 金字塔数据。调用函数以后,金字塔被计算而且相应图像的标识可以被设置,为下一次调用准备就绪 (比如:对除了第一个图像的所有图像序列,标识 CV_LKFLOW_PYR_A_READY 被设置).

 

上面的对opencv中对这个函数的具体介绍: 我把自己使用中获得的收获写下

1 这里的pre 和 cur 分别代表我们需要跟踪图像的前一帧和当前帧,对物体的跟踪,我们在第一帧的时候一般是定位特征点,同时把这帧保存为 pre ,那么处理第二帧的时候这两个参数都会有了。可以进行跟踪了。

2 关于 flag, 根据我们的金字搭是否建立了,设置不同的值,一般在第一次使用0,在一帧处理完了保留当前金字塔为前一帧金字塔,下次处理时候直接可以使用。


转载自:http://www.cnblogs.com/xingma0910/archive/2012/07/26/2610281.html

Python人工智能实例 │ 使用光流法进行人脸追踪(附代码) 导语 哈喽铁汁萌今天小编准备给大家带来一篇使用光流法进行人脸追踪!感兴趣的可以往下滑了???????? 一、背景知识 光流法 目前,光流(optical flow)法是运动图像分析的重要方法之一,它是由James J. Gibson于20世纪40年代首先提出的。它是像素的运动瞬时速度,即空间中的运动物体在观察平面上的像素运动的瞬时速度。光流利用图像序列中像素在时间域上的变化与相邻帧之间的相关性,找到当前帧跟上一帧之间存在的对应关系,从而计算出相邻帧之间的物体运动信息。 在计算机视觉中,Lu 阅读详情

相关推荐

运动目标检测 光流法

运动目标检测 光流法

hddryjv的博客 7322

cv::calcOpticalFlowPyrLK函数

简介 void cv::calcOpticalFlowPyrLK ( InputArray prevImg,以该图片为基准流追踪 InputArray nextImg,用来获得追踪结果的图片 InputArray prevPts,以该数组点为基准就行流追踪,单位单精度浮点数 InputOutputArray nextPts, 获得追踪点的结果 OutputArray status, 输出状态标记,如果追踪到了结果,则对应同角标的状态向量位置元素为1,否则为0 OutputArray err,输

weixin_39068873的博客 3787

OpenCV calcOpticalFlowPyrLK的用法示例

在这个示例中,我们首先读取了前一帧和下一帧的图像,并将它们转换为灰度图像。接下来,我们使用calcOpticalFlowPyrLK函数计算光流,并获取下一帧中的特征点、状态和误差。最后,我们根据状态筛选出有效的特征点,并在下一帧图像中绘制这些特征点的位置。通过使用calcOpticalFlowPyrLK函数,您可以轻松计算图像序列中像素点的光流。计算光流是计算图像序列中像素点在时间上的变化的一种方法。它首先将输入的两帧图像构建成金字塔,然后从金字塔的顶层开始逐层向下计算光流。

ByteProwl的博客 763

Opencv学习(4)——CalcOpticalFlowPyrLK()函数解析

opencv官网:https://docs.opencv.org/3.4.6/dc/d6b/group__video__track.html#ga473e4b886d0bcc6b65831eb88ed93323 void cv::calcOpticalFlowPyrLK ( InputArray prevImg, InputArray nextImg, InputArray prevPts,...

xiaohu的博客 3万+

磁带库Scalar i6000界面基本操作步骤

(注:磁带库的前面的门不要打开,日常维护:主要就是简单看下磁带库的状态;绿色代表正常;黄色代表报警但不影响磁带库正常使用;红色代表报警,不能正常使用,及时和厂家联系报修。) 一、磁带库管理页面 1、首先,磁带库前面(具体作用如图) 2、查看状态和管理页面 3、管理页面登陆。用户名:service 密码:xxxxxx 4、磁带机背面 二、电脑连接磁带库进入管理页面 1.用网线把电脑和磁带库的维护接口(磁带库背面)进行连接 2.电脑环境:JAVA。把电脑的IP设置成自...

杀神lwz的博客 5352

开源分享:苹果群控手机源代码解析与实战

本文介绍了苹果设备群控的基本原理和实现方法,重点解析了基于Python+Appium的群控系统构建。主要内容包括:1)设备连接管理技术(USB/Wi-Fi);2)自动化控制方式(WDA/AppleScript/Appium);3)实战演示了通过Python脚本实现多设备同时控制,涵盖环境配置、代码解析和功能说明;4)提出了多线程、图像识别等优化方向。文章为开发者提供了快速上手的群控方案,适用于自动化测试、批量管理等场景,并推荐了相关开源项目参考。

2403_88540309的博客 1344

cvCalcOpticalFlowPyrLK的使用--基于高斯金字塔的稀疏光流特征集求解

void cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr, CvArr* prev_pyr, CvArr* curr_pyr, const CvPoint2D32f* prev_features, CvPoint2D32f* curr_features, ...

199

RK3588S开发板实战:手把手教你搞定IMX415摄像头驱动配置(附调试日志分析)

本文提供了一份详细的RK3588S开发板配置IMX415摄像头驱动的实战指南。内容涵盖从环境准备、内核驱动编译、设备树节点编写到调试日志分析的完整流程,并重点解析了摄像头调试过程中的常见问题与解决方案,帮助开发者快速完成驱动配置与功能验证。

weixin_28285943的博客 204

TLD源码学习——cvCalcOpticalFlowPyrLK源代码

这两周一直在看tld的源代码,今天看到了tldProcessFrame这个.m文件,里面就开始用lk进行跟踪,可是lk是用matlab编译的C++和opencv得到的mexw32文件,看不到最主要的cvCalcOpticalFlowPyrLK源代码,到opencv里找怎么也找不到,虽说Opencv是开源的,但是有的函数是直接编译好了的,在dll或者lib里,看不到源码,后来到网上搜到了用cmake

MountainHeng的专栏 3059

Mac开发环境一键配置指南|从零到生产力

类别工具包管理Homebrew终端版本管理容器编辑器效率用一键脚本的话,2小时内可以搞定全部环境。有问题评论区交流~

在代码的世界里,每天进步1% 623

AURIX™ TC3xx 调试口保护 secure debug

AURIX™ TC3xx 调试口保护 secure debug UCB_DBG_ORIG and UCB_DBG_COPY Content 使用Debug Password 保护调试接口设置 项目硬件接口保护方案 hexview Lock using UDE Unlockusing UDE Lock using Lauterbach Unlock using Lauterbach

2301_76563067的博客 6855

OpenCV:金字塔Lucas-Kanade光流算法之函数接口cvCalcOpticalFlowPyrLK的使用

Lucas-Kanade光流算法的原理具体可以参考这篇博客:Lucas–Kanade(LK)光流算法详解 函数原型 void cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr, CvArr* prev_pyr, CvArr* curr_pyr, const CvP...

Magnum的博客 2064

[QDS]从零开始,写第一个Qt Design Studio到程序调用的项目

最近在使用Qt Design Studio进行开发,但是简中网上要不就是只搜得到Qt Designer(Qt Creator内部库),要不就只搜得到一点营销号不知道从哪里搬来的账号,鉴于Qt Design Studio是一个这么强大的软件,自然是需要来进行一下小小的实践的。所以开了这篇文章,方便没有使用过Qt Design Studio 和 QML的开发者也可以快速上手QDS(Qt Design Studio)。在本文中,你将学会如何使用QDS开发一个简单的QML程序,与你的C++后端代码进行交流。

Andius的博客 8211

[learning opencv]第十章 跟踪与运动:金字塔Lucas-kanade(cvCalcOpticalFlowPyrLK)检测光流

函数解析cvGoodFeaturesToTrack,http://blog.csdn.net/moc062066/article/details/6634120,和 cvFindCornerSubPix ,http://blog.csdn.net/moc062066/articl

cv ml ai曾经的最爱 2万+

【通信协议】GATT 与 BLE HID 工作原理详解

详细介绍BLE HID 跟GATT工作原理与两者的交互关系

以实战经验介绍行业知识 843

整车电检工艺流程

本文是笔者在从事汽车行业智能制造领域过程,对于整车电检工艺流程的理解与总结。

qq_40664711的博客 1万+

怎么查看opencv中已经封装好的函数(windows下查看cvCalcOpticalFlowPyrLK函数)

学习视觉前端特征点追踪需要学习cvCalcOpticalFlowPyrLK函数,弄懂其原理,但是由于opencv已经直接编译好,只能看到函数声明。因此需要把opencv在windows下编译为一个工程,从而找到函数的定义。 1、下载cmake cmake下载网站 下载cmake然后一步步执行即可 2、下载opencv opencv下载网站 3、编译opencv工程 打开cmake软件 填入相关信息,点击“Where is the source code”后面的“Browse Source…”按钮,选择Op

weixin_41169280的博客 555

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

opencv3.0未定义标识符cvCalcOpticalFlowPyrLK

opencv3.0未定义标识符cvCalcOpticalFlowPyrLK 属性管理器也设置好了,为什么opencv无法识别cvCalcOpticalFlowPyrLK ? 查了好久网上的说法都没有解答我的疑惑 只好去opencv官方文档查看 莫名看到了最下面的头文件#include <opencv2/video/tracking.hpp>,添加上以后编译成功 ...

eastbrook_的博客 526

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Lucas-Kandade 算法 opencv中的cvCalcOpticalFlowLK()与cvCalcOpticalFlowPyrLK()原理及其部分代码理解。

本文部分出自:http://hi.baidu.com/lin65505578/item/b364c3b45f12a39c194697a5 在《learning opencv》中谈论光流计算的部分中,对两个函数的cvCalcOpticalFlowLK()与cvCalcOpticalFlowPyrLK()参数区别,觉得奇怪。 void cvCalcOpticalFlowLK( const CvAr

6194

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

calcOpticalFlowPyrLK使用

CalcOpticalFlowPyrLK 计算一个稀疏特征集的光流,使用金字塔中的迭代 Lucas-Kanade 方法 void cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr, CvArr* prev_pyr, CvArr* curr_pyr, const

Moonlight In The City 1594

CalcOpticalFlowPyrLK的使用(转)

CalcOpticalFlowPyrLK 计算一个稀疏特征集的光流,使用金字塔中的迭代 Lucas-Kanade 方法 void cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr, CvArr* prev_pyr, CvArr* curr_pyr, const C...

weixin_30535167的博客 1093

光流法-运动目标的检测(opencv学习)

光流法-运动目标的检测(opencv学习) 2011-11-04 11:00         cvCalcOpticalFlowPyrLK 函数在使用时,首先要确定特征点,也就是目标旧的位置。         本程序通过使用cvGoodFeaturesToTrack 函数选择角点作为特征点。         本程序只是一个简单的运动检测,在具体应用过程中,可以根据自己的

zht9961020的专栏 1万+

Lerning OpenCV金字塔Lucas-Kanade光流-------运动与跟踪

光流,像素在连续两帧之间的位移关联,或者是像素与速度关联。图像中的每个像素与速度关联得到的是稠密光流,即图像中每个像素都与速度关联,实际上,计算稠密关联并不容易,从而引入稀疏光流。稀疏光流的计算需要在被跟踪之前指定一组点,即角点,一般使用的OpenCv的cvGoodFeaturesToTrack()函数获取角点。        LK算法基于的三个假设:亮度恒定、时间连续或者运动是小运动、空间一致

zhangchunbo135246的专栏 2345

cvCornerHarris角点提取实例c++

cvCornerHarris: 功能:检测图像的哈里斯角点检测,判断出某一点是不是图像的角点 函数形式: void cvCornerHarris( const CvArr* image, CvArr* harris_responce, int block_size, int aperture_size=3, double k=0.04 ); 参数列表: Image 输入图像 harris_responce存储哈里斯检测responces的图像。与输入图像等大 block_size 邻域大小(见关于cvCor

weixin_41469272的博客 576

光流法-运动目标的检测二(opencv学习)

光流法-运动目标的检测二(opencv学习) 2011-11-04 11:05          正如上一篇文章所述, cvCalcOpticalFlowPyrLK 需要确定特征点。          本程序,通过帧差获得运动的点作为特征点。          本程序原本的目的是计算运动点的速度,通过修正可以进行运动跟踪。   #include #include

zht9961020的专栏 5144
上一篇: 金字塔Lucas-Kanade稀疏光流
下一篇: 基于例子滤波的物体跟踪
淡淡的生活
博客等级 码龄16年 341粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值