OpenCV 中测量角度的参考点是什么?

What is the reference point for measuring angles in OpenCV?

我正在尝试使用 OpenCV 中的密集光流来推断物体的运动方向。我正在使用 calcOpticalFlowFarneback() 获取流坐标,并使用 cartToPolar() 获取指示方向的矢量角度。

要解释结果,我需要知道测量角度的参考点。我发现this博客post表示角度范围是360°。这告诉我角度测量将沿着单位圆的线进行。我看不出更多。

cartToPolar() 的文档没有涵盖这一点,我的测试尝试失败了。

查看codefastAtan32f用于计算角度。这似乎是一个 atan2 实现。

看来cartToPolar()产生的角度是以左上角图像坐标起点为中心顺时针旋转90°的单位圆。 It would look like this.

我是使用OpenCV提供的dense optical flow example得出这个结论的。我用 hsv[...,0] = ang*180/np.pi 替换了行 hsv[...,0] = ang*180/np.pi/2 以获得正确的弧度角度转换。然后我测试了一个视频,人们从右上角移动到左下角,反之亦然。我使用 GIMP 对主色进行了采样,并获得了 RGB 值,并将其转换为 HSV 值。色调值对应于以度为单位的角度。

从右上角移动到左下角的人产生了大约 300° 的角度,而从相反方向移动的人产生了大约 120° 的角度。这暗示了单位圆的定位方式。