光流跟踪

光流金字塔calcOpticalFlowPyrLK的C++定义如下:

C++: void calcOpticalFlowPyrLK(InputArray prevImg, InputArray nextImg, InputArray prevPts,
InputOutputArray nextPts, OutputArray status, OutputArray err,
Size winSize=Size(21,21), int maxLevel=3, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01),
int flags=0, double minEigThreshold=1e-4 )

各个参数代表的含义如下: 
prevImg 
你的标定图像的灰度图 
nextImg 
你想搜寻的图像的灰度图 
prevPts 
输入的标定图像的特征点(可以是其他特征点检测方法找到的点) 
nextPts 
输出场景的特征点 
status 
输出状态向量(无符号char),如果在当前图像中能够光流得到标定的特征点位置改变,则设置status的对应位置为1,否则设置为0 
err 
输出错误向量;向量的每个元素被设为相应特征的一个错误,误差测量的类型可以在flags参数中设置;如果流不被发现然后错误未被定义(使用status(状态)参数找到此情形)。 
winSize 
在每个金字塔水平搜寻窗口的尺寸 
maxLevel 
金字塔的高度,初始为3层

当使用calcOpticalFlowPyrLK作为光流金字塔的算法时候,我们只需要知道以下的几点:

calcOpticalFlowPyrLK必须和其他的角点识别算法进行搭配使用,比如我这里使用的goodFeaturesToTrack,将其他的角点识别算法中获得的角点作为光流算法的prevPts
status 的大小和当前需要识别的光流移动的特征点大小一样,所以我们可以判定当前的图像是否还能与标定图像进行光流的依据



 
 
 
 

猜你喜欢

转载自blog.csdn.net/x5675602/article/details/79961309