Вы нашли края, теперь вам нужно найти , где эти края расположены.
(я не использовал предоставленное вами изображение, я скорее использовал образец изображения на рабочем столе: D)
Следующие строки дают вам эти координаты:
import cv2
import numpy as np
img = cv2.imread('Messi.jpg', 0)
edges = cv2.Canny(img, 100, 255) #--- image containing edges ---
Теперь вам нужно найти координаты, имеющие значение больше 0
indices = np.where(edges != [0])
coordinates = zip(indices[0], indices[1])
- Я использовал метод
numpy.where()
для получения кортежа indices
из двух массивов, где первый массив содержит координаты x белых точек, а второй массив - координаты y белых пикселей.
indices
возвращает:
(array([ 1, 1, 2, ..., 637, 638, 638], dtype=int64),
array([292, 298, 292, ..., 52, 49, 52], dtype=int64))
- Затем я использовал метод
zip()
, чтобы получить список кортежей, содержащих точки.
Печать coordinates
дает мне список координат с ребрами:
[(1, 292), (1, 298), (2, 292), .....(8, 289), (8, 295), (9, 289), (9, 295), (10, 288), (10, 289), (10, 294)]