cv::calcOpticalFlowPyrLK()是一个OpenCV库中的函数,用于计算稀疏光流。它是基于金字塔的Lucas-Kanade算法的一种改进版本。该函数可以用于跟踪图像序列中的关键点,估计两个图像之间的点的运动。
它的函数原型如下:
```cpp
void cv::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 // 最小特征值阈值
);
```
这个函数使用了前一帧图像和当前帧图像之间的关键点来计算这些关键点的光流。它会返回一个布尔类型的矩阵,表示每个关键点的跟踪状态,以及一个浮点型的矩阵,表示跟踪误差。
在调用这个函数时,你需要提供前一帧和当前帧的图像,以及前一帧中的关键点。函数会返回当前帧中对应的关键点位置,并将跟踪状态和误差输出到指定的变量中。
这是一个非常有用的函数,可以在计算机视觉中用于很多任务,比如目标跟踪、光流估计等。