我一直在运行官方文档页面中给出的Dense Optical Flow的Python实现代码。在代码的一个特定行,他们使用
mag,ang = cv2.cartToPolar(flow [...,0],flow [...,1])。
当我打印mag的值时,我会得到这些 -
Please check this image for the output I'm getting
我不知道如何理解这个输出。
我的最终目标是使用光流来获得每帧的结果或平均运动值。
答案 0 :(得分:1)
引用您使用的相同OpenCV教程
我们得到一个带有光流向量的双通道阵列,(u,v)。
这是密集光流的输出。基本上它告诉你每个点如何以矢量方式移动。 (u,v)
只是矢量的笛卡尔表示,它可以转换为极坐标,这意味着角度和幅度。
角度是像素移动的方向。并且幅度是像素移动的距离。
在许多算法中,您可以使用幅度来了解像素是否移动(例如,小于1意味着没有移动)。或者,如果您正在跟踪一个您知道初始位置的对象(意味着对象的像素位置),您可以找到大多数像素移动到的位置,并使用该信息来确定新位置。
BTW,cartToPolar以Radians形式返回角度,除非指定。以下是文档的摘录:
cv2.cartToPolar(x, y[, magnitude[, angle[, angleInDegrees]]]) → magnitude, angle
如果你需要它,那么 angleInDegrees
必须是True
。