用一条线连接骨架的两个近端点

我想通过在它们之间距离最短的点之间画一条线来链接图像的两个近端点。

http://img.mukewang.com/61e678940001619a05830398.jpg

我尝试了连接散点的方法,但这不适用于我的代码。我使用 Shi-Tomasi 角点检测来绘制角点。


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)

我有图像的端点。我只想用一条线连接最近的端点。如上图所示,我手动尝试了它。


叮当猫咪
浏览 190回答 1
1回答

qq_花开花谢_0

没关系伙计们我明白了!我将点数组转换为列表,并使用欧几里得距离函数找到最小距离并画了一条线
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python