是否可以删除opencv或scikit图像中的骨架小分支?
是否可以在骨架过程中删除小分支 如图所示: 只有O字母是完美的,但不是所有其他字母 有没有办法在过程中或之后删除这个小分支? 我使用PythonOpenCV,但使用pymorph或scikit image的解决方案也不错。 下面是我用于骨骼化的代码: 原始图像:以下是以下结果:是否可以删除opencv或scikit图像中的骨架小分支?,opencv,image-processing,mathematical-morphology,scikit-image,Opencv,Image Processing,Mathematical Morphology,Scikit Image,是否可以在骨架过程中删除小分支 如图所示: 只有O字母是完美的,但不是所有其他字母 有没有办法在过程中或之后删除这个小分支? 我使用PythonOpenCV,但使用pymorph或scikit image的解决方案也不错。 下面是我用于骨骼化的代码: 原始图像:以下是以下结果: Scikit图像具有骨架化和薄化功能,这可能有助于实现您的目标 lee版本的skeletonize有效地细化了边缘骨架特征,而不仅仅是骨架 Thin使您能够对图像进行部分骨架化。你可以先做一个局部瘦身,然后做一个扩张
Scikit图像具有骨架化和薄化功能,这可能有助于实现您的目标 lee版本的skeletonize有效地细化了边缘骨架特征,而不仅仅是骨架 Thin使您能够对图像进行部分骨架化。你可以先做一个局部瘦身,然后做一个扩张或开放手术,以得到接近形态修剪的东西() 这里有scikit骨架工具的示例:
你确定吗?我只有一个完全黑色的形象!我尝试了两种图像;未skeletonized和skeletonized。Skeletonize返回一个包含0和1的图像,但数据类型可能应该是bool或float,而不是int(我打开了一个票证:)。同时,只使用<代码> out=out。Atpype(浮点)< />代码。在C++中有没有实现,而不是用Python实现?
from skimage import io
from skimage import morphology
image = io.imread('opencv.png')
out = morphology.skeletonize(image > 0)
from skimage.morphology import skeletonize
from skimage import data
import matplotlib.pyplot as plt
from skimage.util import invert
# Invert the horse image
image = invert(data.horse())
# perform skeletonization
skeleton = skeletonize(image)
skeleton_lee = skeletonize(image, method='lee')
# display results
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(8, 4),
sharex=True, sharey=True)
ax = axes.ravel()
ax[0].imshow(image, cmap=plt.cm.gray)
ax[0].axis('off')
ax[0].set_title('original', fontsize=20)
ax[1].imshow(skeleton, cmap=plt.cm.gray)
ax[1].axis('off')
ax[1].set_title('skeleton', fontsize=20)
ax[2].imshow(skeleton_lee, cmap=plt.cm.gray)
ax[2].axis('off')
ax[2].set_title('skeleton lee', fontsize=20)
fig.tight_layout()
plt.show()