如何从密集光流中提取速度矢量?

mon*_*822 7 opencv opticalflow

问题:我正在尝试对齐移动视频的两帧.

我目前正在尝试使用函数"cvCalcOpticalFlowLK",结果以"CvArr"的形式输出x和y的速度向量.

所以我得到了结果,但我不知道如何使用这些矢量数组.

我的问题是......我怎么知道每个像素的速度是多少?它只是该特定点上每个像素值的值吗?

注意:我会使用其他光流功能,如cvCalcOpticalFlowPyrLK(),因为它更容易,但我想要密集的光流.

mon*_*822 4

显然我最初的假设是正确的。光流函数的“velx”和“vely”输出是每个像素值的实际速度。为了最好地提取它们,我从原始数据中访问了像素并提取了值。有两种方法可以做到这一点。

cvGet2D()——这种方式速度较慢,但​​如果您只需要访问 1 个像素,那就没问题。

或者

(uchar*)(图像->图像数据+高度*图像->宽度步长+宽度);

(图像是IplImage,宽度和高度只是图像对应的宽度和高度)