Lucas-Kanade算法最初也是计算稠密光流的,后来成为求稀疏光流的一种重要方法,这里要介绍的是金字塔LK算法:
在Python函数原型为:nextPts, status, err = calcOpticalFlowPyrLK(prevImg, nextImg, prevPts[,
nextPts[, status[, err[, winSize[, maxLevel[, criteria[, flags[,
minEigThreshold]]]]]]]])
参数说明:prevImage 前一帧8-bit图像
nextImage 当前帧8-bit图像
prevPts 待跟踪的特征点向量
nextPts 输出跟踪特征点向量
status 特征点是否找到,找到的状态为1,未找到的状态为0
err 输出错误向量,(不太理解用途...)
winSize 搜索窗口的大小
maxLevel 最大的金字塔层数
flags 可选标识:OPTFLOW_USE_INITIAL_FLOW OPTFLOW_LK_GET_MIN_EIGENVALS
具体英文说明参照:http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html#cv2.calcOpticalFlowPyrLK
计算光流前需要先初始特征点,Python实例采用的是角点
函数原型:corners = cv2.goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance[, corners[, mask[, blockSize[,