众所周知,CV2中的坐标方向是这样的:
所以一般我们想计算图片中某个点P1(x1,y1)与中心点P0(x0,y0)的方向时,我们会先将y坐标翻上去,然后计算角度。即:
p1_x=int(x1) #
p1_y=int(y1)
p0_x=int(x0) #图像大小为512*512中心点坐标为255,255
p0_y=int(y0)
dx = p1_x-255
dy= -(p1_y-255) #因为cv2朝下,所以方向为-
angle=math.degrees(math.atan2(dy,dx)) #先转化成弧度再转化成角度
现在得到的角度是以中心点P0为原点,以x轴正方向为0度,取值范围为-180-+180度的角度。
我们想要将其转化成下图所示的这种360度的形式:
观察上上图后可以知道,在0-180度(-pi~pi的坐标系下)的时候,我们需要用180减去当前角度,在0到-180(-pi~pi的坐标系下)的时候,我们需要用180加上负的当前角度。
"""
if angle>=0:
angle=180-angle
if angle<0:
angle=180+(-angle)
"""
#总之,就是:
angle=180-angle