У меня есть многоугольник типа этот, и я хочу получить xy-координаты границы этот многоугольник.
Поэтому я попробовал обнаружение Canny Edge OpenCV и извлек координаты следующим образом:
>>> edge = cv2.Canny(region, 100, 200)
>>> ans = []
>>> for y in range(0, edge.shape[0]):
>>> for x in range(0, edge.shape[1]):
if edge[y, x] != 0:
ans = ans + [[x, y]]
>>> print ans
Проблема в том, что я хотел бы извлечь координаты в том порядке, в котором они расположены на границе, например эта картинка может объяснить.
Поскольку мои многоугольники сложны, выпуклая оболочка не работает, и из-за количества краевых точек, которые я получаю от cv2.edge(), мне нужно использовать быстрый алгоритм.