Неверно рассчитываются наклоны линий. Пожалуйста, найдите ниже изображение для справки.
По сути, я пытаюсь понять, находится ли линия справа или слева от центральной точки.
Я попытался поменять параметры, также попытался добавить 180,90 -360, -180 градусов от наклона. При добавлении 45 или -45 других склонов портятся (без
добавив 45 / -45 также, все еще это не близко к точному значению).
def dist(xc,yc,lin_arr):
distance =math.sqrt( ((xc -lin_arr[0])**2)+((yc -lin_arr[1])**2) )
m=0
m=int((yc-lin_arr[1])/(xc-lin_arr[0]) )
slope=math.degrees(math.atan(m))+45
print("distance",distance,xc,yc,lin_arr,"slope:",(slope))
return distance,(slope)
Переменные xc & yc - это координаты x и y центральной точки или точки 1. lin_arr - это значение точки в формате массива точки 2 ().
Хотя lin_arr является производным от строки кода ниже:
ret,thresh = cv2.threshold(img,max_lin ,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for i in range(0,len(contours)):
cnt = contours[i]
rect = cv2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
listy = []
for row in range(4):
inner_list = []
for col in range(2):
inner_list.append(box[row][col])
listy.append(inner_list)
print("tjos/n",listy)
for i in range(4):
s,slope= dist(xc,(2*yc),listy[i])
im=cv2.line(img, tuple((xc,(2*yc))), tuple(listy[i]), (0,255,0), 2, cv2.LINE_AA, 0)