Member 14649324 Ответов: 1

Как найти угол между двумя перпендикулярными линиями в opencv


у меня есть две перпендикулярные линии как нарисовать угол между ними

Что я уже пробовал:

включает в себя мпорт как НП
импорт cv2

btn_down = ложь

деф get_points(им):
# Настройка данных для отправки в обработчик мыши
данные = {}
данные['чат'] = им.копия()
данные['lines'] = []

# Установите функцию обратного вызова для любого события мыши
cv2.imshow("изображение", im)
cv2.setMouseCallback("образ", mouse_handler, сведения)
cv2.waitKey(0)

# Преобразование массива в np.array в форме n,2,2
очки = НП.типа uint16(линии данных [''])

точки возврата, данные['im']

def mouse_handler(событие, x, y, флаги, данные):
мировой btn_down

если событие == cv2.EVENT_LBUTTONUP и btn_down:
#если вы отпустите кнопку, закончите строку
btn_down = ложь
data['lines'][0].append((x, y)) #добавить вторую точку
cv2.circle(data['im'], (x, y), 3, (0, 0, 255),5)
cv2.line(data['im'], data['lines'][0][0], data['lines'][0][1], (0,0,255), 2)
cv2.imshow("изображение", данные['im'])

elif event == cv2.EVENT_MOUSEMOVE и btn_down:
#это просто для визуализации ине
image = data['im'].copy()
cv2.line(изображение, данные['lines'][0][0], (x, y), (0,0,0), 1)
cv2.imshow("изображение", image)

elif event == cv2.EVENT_LBUTTONDOWN и len(data['lines']) < 10:
btn_down = истина
данные [линий].вставить(0,[(х, г)]) #добавить точку
cv2.circle(data['im'], (x, y), 3, (0, 0, 255), 5, 16)
cv2.imshow("изображение", данные['im'])


# Запуск кода
img = cv2.imread("98.jpg", 1)
ПТС final_image = get_points(рис)
cv2.imshow ("изображение", final_image)
печати (ПТС)
cv2.waitKey(0)

1 Ответов

Рейтинг:
2

Gerry Schmitz

Я ставлю свою линию вертикально или горизонтально, а затем поворачиваю ее вокруг какой-то точки, чтобы сделать и получить угол. Проще, чем заниматься геометрией.

c++ - поворот точки вокруг точки с помощью OpenCV - переполнение стека[^]

(Да, я знаю, что это C++; это "концепция". Это для всех болтливых набобов негативизма)