我有这样的图像:
用scikit图像的骨架化函数对其进行骨架化后
from skimage import morphology
out = morphology.skeletonize(gray>0)
有一种计算黑色空间数量的方法吗? (在这张图片中为六)除了scikit-image或mahotas的背景?
答案 0 :(得分:5)
使用此输入:
你可以这样做:
>>> 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
运行它,因为宽前景/线仍将标记为单个组件。
答案 1 :(得分:2)
仅使用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()