我有这样的图像:
在我通过 scikit 图像的骨架化功能对其进行骨架化之后
from skimage import morphology
out = morphology.skeletonize(gray>0)
有没有办法计算黑色空间的数量?(在这张图六中)除了 scikit-image 或 mahotas 中的背景?
我有这样的图像:
在我通过 scikit 图像的骨架化功能对其进行骨架化之后
from skimage import morphology
out = morphology.skeletonize(gray>0)
有没有办法计算黑色空间的数量?(在这张图六中)除了 scikit-image 或 mahotas 中的背景?
使用此输入:
你可以做:
>>> from skimage import morphology
>>> import numpy as np
>>> from scipy.misc import imread
>>> im = imread("Bju1h.png")
>>> im = im > 0
>>> np.unique(morphology.label(im))
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> num_components = len(np.unique(morphology.label(im))) - 2
>>> num_components
6
我减去 2 以忽略背景分量和前景/线条分量。从您的原始图像中,您可以跳过骨架化步骤并使用 运行它im = gray > 0
,因为宽前景/线仍将被标记为单个组件。
单独使用 scipy.ndimage 的解决方案
from scipy import ndimage as nd
from matplotlib import pyplot as plt
star = nd.imread('/home/jeanpat/Images/star.jpg')
star = star[:,:,0]
thr = star < 120
anti = star >119
mask = nd.morphology.binary_fill_holes(thr)
lab, n = nd.label(anti*mask)
plt.title(str(n)+' objects detected')
plt.imshow(lab)
plt.show()