当我们运行密集光流(farnnback)时,输出究竟是什么?

时间:2017-10-25 05:52:33

标签: opencv opticalflow

我一直在运行官方文档页面中给出的Dense Optical Flow的Python实现代码。在代码的一个特定行,他们使用
mag,ang = cv2.cartToPolar(flow [...,0],flow [...,1])。 当我打印mag的值时,我会得到这些 - Please check this image for the output I'm getting

我不知道如何理解这个输出。

我的最终目标是使用光流来获得每帧的结果或平均运动值。

1 个答案:

答案 0 :(得分:1)

引用您使用的相同OpenCV教程

  

我们得到一个带有光流向量的双通道阵列,(u,v)。

这是密集光流的输出。基本上它告诉你每个点如何以矢量方式移动。 (u,v)只是矢量的笛卡尔表示,它可以转换为极坐标,这意味着角度和幅度。

角度是像素移动的方向。并且幅度是像素移动的距离。

在许多算法中,您可以使用幅度来了解像素是否移动(例如,小于1意味着没有移动)。或者,如果您正在跟踪一个您知道初始位置的对象(意味着对象的像素位置),您可以找到大多数像素移动到的位置,并使用该信息来确定新位置。

BTW,cartToPolar以Radians形式返回角度,除非指定。以下是文档的摘录:

cv2.cartToPolar(x, y[, magnitude[, angle[, angleInDegrees]]]) → magnitude, angle
如果你需要它,那么

angleInDegrees必须是True