Соединить две близкие конечные точки скелета линией - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу связать две близкие конечные точки изображения, рисуя линию между точками, которые имеют наименьшее расстояние между ними.

green lines, with endpoints marked in yellow, and some nearby yellow dots linked by manually drawn line

Я пробовал методы, которые соединяют точки рассеянияно это не относится к моему коду.Я использовал обнаружение углов Ши-Томази для построения угловых точек.

import cv2
import numpy as np
from matplotlib import pyplot as plt
import cv2 as cv
from scipy.spatial import distance

img = cv2.imread('edge.png', cv2.IMREAD_GRAYSCALE)
rows, cols = img.shape
canny = cv2.Canny(img, 50, 240)
kernel = np.ones((5,5),np.uint8)
dilation = cv2.dilate(canny,kernel,iterations = 1)

size = np.size(img)
skel = np.zeros(img.shape,np.uint8)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
skel = cv2.bitwise_or(skel,dilation)
corners = cv2.goodFeaturesToTrack(skel,30,0.01,11)
corners = np.int0(corners)
for i in corners:
   x,y = i.ravel()
   cv2.circle(img,(x,y),3,255,-1)

print(corners)

plt.imshow(img),plt.show()

cv2.imshow('Original', dilation)
cv2.imshow('canny', canny)

У меня есть конечные точки изображения.Я просто хочу связать ближайшие точки с линией.Я попробовал это вручную, как показано на рисунке выше.

1 Ответ

0 голосов
/ 23 апреля 2019

Неважно, ребята, я понял!

Я преобразовал массив точек в список и нашел наименьшее расстояние, используя евклидову функцию расстояния, и нарисовал линию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...