#image-processing #opencv3.0 #python-3.8 #edges #neighbours
#обработка изображений #opencv3.0 #python-3.8 #края #соседи
Вопрос:
Я нахожу границы на изображении с помощью python, сначала я создаю окрестности с изображением в сером масштабе, затем мне нужно найти точки, которые соединяют созданные мной окрестности (края).
Вот пример моего массива окрестностей. Значения [x, y] представляют позиции пикселя, который является частью окрестности. Это диаграмма массива окрестностей (vecinos)
[ [ [0,0], [0,1],[0,2] ], [ [1,0], [1,1],[1,2] ] ]
Ссылка на Google Drive на полный массив окрестностей в текстовой форме
И это функция, которую я использую для обнаружения границ
def getPoints(vecinos, img):
print('puntos')
length = len(vecinos)
bol = np.zeros(img.shape,img.dtype)
for i in range(length):
for j in range(length):
if not i == j:
for val2 in vecinos[i]:
for val1 in vecinos[j]:
res1 = abs(val1[0] - val2[0])
res2 = abs(val1[1] - val2[1])
if( (res1 == 0 or res1 == 1) and (res2 == 1 or res2 == 0) ):
print('borde')
bol[ val1[0],val1[1] ] = 1
bol[ val2[0],val2[1] ] = 1
return bol
результат этой функции возвращает массив с той же высотой и шириной, где 1 идентифицируется как границы, а остальное равно 0. Вот пример массива numpy, который получается. это текст результата, который я загрузил на свой Google диск
эта функция возвращает массив с 0 и 1, 1 — это обнаруженные границы. Я хочу сделать это быстрее, это работает нормально, но это занимает много времени, когда размер изображения превышает 100 пикселей
Комментарии:
1. Возможно, диаграмма помогла бы показать, как выглядят «массив позиций» и «окрестности» … и еще одна, показывающая, как выглядит ожидаемый «ответ» .
2. Привет, я добавил диаграмму, чтобы вы могли лучше меня понять, я добавил несколько ссылок на ожидаемый массив ответов, который я ищу