OpenCV 中测量角度的参考点是什么?
What is the reference point for measuring angles in OpenCV?
我正在尝试使用 OpenCV 中的密集光流来推断物体的运动方向。我正在使用 calcOpticalFlowFarneback()
获取流坐标,并使用 cartToPolar()
获取指示方向的矢量角度。
要解释结果,我需要知道测量角度的参考点。我发现this博客post表示角度范围是360°。这告诉我角度测量将沿着单位圆的线进行。我看不出更多。
cartToPolar()
的文档没有涵盖这一点,我的测试尝试失败了。
查看code,fastAtan32f
用于计算角度。这似乎是一个 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° 的角度。这暗示了单位圆的定位方式。
我正在尝试使用 OpenCV 中的密集光流来推断物体的运动方向。我正在使用 calcOpticalFlowFarneback()
获取流坐标,并使用 cartToPolar()
获取指示方向的矢量角度。
要解释结果,我需要知道测量角度的参考点。我发现this博客post表示角度范围是360°。这告诉我角度测量将沿着单位圆的线进行。我看不出更多。
cartToPolar()
的文档没有涵盖这一点,我的测试尝试失败了。
查看code,fastAtan32f
用于计算角度。这似乎是一个 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° 的角度。这暗示了单位圆的定位方式。