Я хочу связать две близкие конечные точки изображения, рисуя линию между точками, которые имеют наименьшее расстояние между ними.
Я пробовал методы, которые соединяют точки рассеянияно это не относится к моему коду.Я использовал обнаружение углов Ши-Томази для построения угловых точек.
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)
У меня есть конечные точки изображения.Я просто хочу связать ближайшие точки с линией.Я попробовал это вручную, как показано на рисунке выше.