用Python对图像进行骨架化

2024-09-28 18:57:27 发布

您现在位置:Python中文网/ 问答频道 /正文

import scipy.ndimage.morphology as m
import numpy as np
import cv2

def skeletonize(img):
h1 = np.array([[0, 0, 0],[0, 1, 0],[1, 1, 1]]) 
m1 = np.array([[1, 1, 1],[0, 0, 0],[0, 0, 0]]) 
h2 = np.array([[0, 0, 0],[1, 1, 0],[0, 1, 0]]) 
m2 = np.array([[0, 1, 1],[0, 0, 1],[0, 0, 0]])    
hit_list = [] 
miss_list = []
for k in range(4): 
    hit_list.append(np.rot90(h1, k))
    hit_list.append(np.rot90(h2, k))
    miss_list.append(np.rot90(m1, k))
    miss_list.append(np.rot90(m2, k))    
img = img.copy()
while True:
    last = img
    for hit, miss in zip(hit_list, miss_list): 
        hm = m.binary_hit_or_miss(img, hit, miss) 
        img = np.logical_and(img, np.logical_not(hm)) 
    if np.all(img == last):  
        break
return img

img = cv2.imread("e_5.jpg",0)
ret,img = cv2.threshold(img,127,255,0)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
img = 255 - img
img = cv2.dilate(img, element, iterations=3)

skel = skeletonize(img)
imshow(skel, cmap="gray", interpolation="nearest")

我一直在尝试这段代码,以便对图像进行骨架化处理,骨架线之间没有任何间隙。但是每当我运行这个程序时,就会出现一个错误,就是点击“imshow in not defined”。在

我试过了plt.imshow公司,此时既没有错误也没有输出图像。谁能告诉我哪里出了问题吗。在


Tags: inimportimgasnph1arraycv2
1条回答
网友
1楼 · 发布于 2024-09-28 18:57:27

您可能忘记了使用短别名plt(请注意,名称可以替换为您想要的名称),调用show()命令,以便在代码中添加以下内容:

import matplotlib.pyplot as plt

plt.imshow()
plt.show()

有关详细信息,请参阅:https://stackoverflow.com/a/3497922/4716013

相关问题 更多 >