Opencv -- 基于光流的对象跟踪

本文介绍了光流的基本原理,包括稀疏光流的KLT算法和稠密光流的HF方法。在稀疏光流中,通过Lucas-Kanade迭代法跟踪特征点,而在稠密光流中,所有像素点都被比较以检测运动。OpenCV库提供了goodFeaturesToTrack和calcOpticalFlowPyrLK等API用于角点检测和光流计算。代码示例展示了如何使用这些API进行稀疏和稠密光流跟踪。

1. 基本原理

2. 稀疏光流 - KLT

稀疏光流 -- 流程:

3. 稠密光流 - HF

稠密光流跟踪是将当前帧的所有像素点与前一帧比较,有变化的标记出来。对比的点比较多,不是对比变化的那几个特征点。所以速度较慢。没有稀疏光流的速度快。但有的时候效果比稀疏光流要好。

4. 相关API

(1)opencv中的goodFeaturesToTrack函数可以计算Harris角点和shi-tomasi角点,但默认情况下计算的是shi-tomasi角点,函数原型如下:

void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners,
                              int maxCorners, double qualityLevel, double minDistance,
                              InputArray _mask, int blockSize,
                              bool useHarrisDetector, double harrisK )

参数解释:

image:8位或32位浮点型输入图像,单通道

corners:保存检测出的角点

maxCorners:角点数目最大值,如果实际检测的角点超过此值,则只返回前maxCorners个强角点

qualityLevel:角点的品质因子

minDistance:对于初选出的角点而言,如果在其周围minDistance范围内存在其他更强角点,则将此角点删除

mask:指定感兴趣区,如不需在整幅图上寻找角点,则用此参数指定ROI

blockSize:计算协方差矩阵时的窗口大小

useHarrisDetector:指示是否使用Harris角点检测,如不指定,则计算shi-tomasi角点

harrisK:Harris角点检测需要的k值

(2)计算一个稀疏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值