Мое окончательное намерение - построить что-то на основе этого: https://www.researchgate.net/publication/308194022_Tifinagh_Character_Recognition_using_Harris_Corner_Detector_and_Graph_Representation
И я застрял в части 3.2 с созданием матрицы смежности для углов. Приведенный ниже рисунок помогает визуализировать то, чего я пытаюсь достичь.
![Output so far](https://i.imgur.com/fyZ4nX5.png)
Скажем, я взял это изображение А и применил к нему Харриса, а затем использовал этот код
# define the criteria to stop and refine the corners
ret, labels, stats, centroids = cv2.connectedComponentsWithStats(dst)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001)
corners = cv2.cornerSubPix(gray,np.float32(centroids),(5,5),(-1,-1),criteria)
#print corners
for i in range(1, len(corners)):
print(corners[i])
Я получаю хороший список угловых координат, который выглядит следующим образом:
[51.70207 62.5541 ]
[ 37.04742 100.78287]
[ 66.707726 100.73132 ]
[ 29.685337 119.28638 ]
[ 75.62286 119.49719]
Для справки: изображение размером 106 x 189.
Но как я могу выяснить, с кем это связано? Я пытался "пройти" массив изображений из угла, пока не столкнулся с другим, но это не охватывает случаи, когда их много, например, центральные точки в точке А. Я также подумал о том, как я могу перебрать каждый угол и посмотреть, смогу ли я подключиться к другим, но, поскольку они являются частью одного контура, они всегда смогут подключиться.
Любой совет приветствуется.