У меня есть скелетное изображение (показано ниже).Поиск пересечений скелетного изображения в python opencv
Я хотел бы получить пересечение линий. Я попробовал следующий метод ниже, skeleton
является OpenCV изображений и алгоритм возвращает список координат:
def getSkeletonIntersection(skeleton):
image = skeleton.copy();
image = image/255;
intersections = list();
for y in range(1,len(image)-1):
for x in range(1,len(image[y])-1):
if image[y][x] == 1:
neighbourCount = 0;
neighbours = neighbourCoords(x,y);
for n in neighbours:
if (image[n[1]][n[0]] == 1):
neighbourCount += 1;
if(neighbourCount > 2):
print(neighbourCount,x,y);
intersections.append((x,y));
return intersections;
Он находит координаты белых пикселей, где есть более двух смежных пикселей. Я думал, что это только вернет углы, но это не так - оно возвращает еще много очков.
Это выход с точками он обнаруживает, помеченных на изображении. Это происходит потому, что он обнаруживает некоторые из приведенных ниже примеров, которые не являются пересечениями.
0 0 0 1 1 0 0 1 1
1 1 1 0 1 0 1 1 0
0 0 1 0 0 1 0 0 0
И еще много примеров. Есть ли другой метод, который я должен рассмотреть, чтобы обнаружить пересечения. Спасибо всем, спасибо, спасибо.
возможно увеличить счет до 4 или 6, чтобы отфильтровать точки в этой строке 'if (neighbourCount> 2):'. –