如何获得每个点的圆度

时间:2019-03-25 04:55:51

标签: python numpy opencv matplotlib math

我正在尝试确定圆上两个点之间的度数。我这样做很麻烦。我看过其他帖子,但似乎无法弄清楚如何实现它。

我正在尝试获取两者之间的距离(以度为单位)。

希望下面的模型可以使您更好地理解。

这是数据图表

enter image description here

def get_angle(x, y):
    #75 being the center circle coordinate
    (dx, dy) = (75-x, y-75)
    angle = degrees(atan2(float(dy), float(dx)))
    if angle < 0:
        angle += 180

    return angle

它返回的值似乎不正确,因为由于某些原因这些值非常相似。例如157和120,但显然不应返回该值。我对图像处理有些陌生,所以我可能看错了。

1 个答案:

答案 0 :(得分:0)

中心坐标:cx, cy
点坐标:ax, ay代表点Abc, by代表点B
角度的伪代码:

 dp = dot(A-C, B-C) = (ax-cx)*(bx-cx) + (ay-cy)*(by-cy)
 cross = vectorproduct(A-C, B-C) = (ax-cx)*(by-cy) - (ay-cy)*(bx-cx)
 angle = degrees(atan2(cross, dp))
 if angle < 0:
      angle += 180

如果角度方向不是您所期望的,请更改十字符号