cv::calcOpticalFlowPyrLK函数

简介

void cv::calcOpticalFlowPyrLK (
InputArray prevImg,以该图片为基准流追踪

InputArray nextImg,用来获得追踪结果的图片

InputArray prevPts,以该数组点为基准就行流追踪,单位单精度浮点数

InputOutputArray nextPts, 获得追踪点的结果

OutputArray status, 输出状态标记,如果追踪到了结果,则对应同角标的状态向量位置元素为1,否则为0

OutputArray err,输出错误标记; 向量的每个元素都设置为相应特征的错误,错误度量的类型可以在flags参数中设置; 如果未找到流,则对错误不进行定义(使用status参数查找此类情况)

Size winSize = Size(21, 21),每个金字塔的搜索窗口的winSize大小

int maxLevel = 3,金字塔层数,图像层级总数为该值+1

TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01), 指定迭代搜索算法的终止条件的参数

int flags = 0, 判定追踪结果错误的度量
若为OPTFLOW_USE_INITIAL_FLOW,则使用初始估计,存储在nextPts中;如果未设置标 志,则将prevPts复制到nextPts并将其视为初始估计。
若为 OPTFLOW_LK_GET_MIN_EIGENVALS,则使用最小特征值作为误差测量(参见minEigThreshold描述)
如果没有设置标志,则将原稿周围的色块和移动点之间的L1距离除以窗口中的像素数,用作误差测量。

double minEigThreshold = 1e-4
)
参考https://blog.csdn.net/weixin_42905141/article/details/93745116

例如

如cv::calcOpticalFlowPyrLK(cur_img, forw_img, cur_pts, forw_pts, status, err, cv::Size(21, 21), 3)调用方法
img类型定义为

cv::Mat img

pts类型定义为

vector<cv::Point2f> pts

其中status与err由如下定义

vector<uchar> status;
vector<float> err;

cur_img与forw_img对应了要追踪光流的两张照片,使用cur_pts作为前一时刻已经提取出的点(即在cur_img上已经提取出的点,利用各类角点提取方法),随后送入status与err作为追踪结果的状态记录,用之加以判断追踪的结果。最后两个参数是一般默认值。

注意,图片大小要相同

共勉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值