skimage flood_fill填充整个图像

问题描述

这些是我用于填充图像的代码,所以我想要的只是颜色值为50的外层空间,而所有内容都是灰色的。

checkers = invert(cv2.imread('skeleton2.jpg',cv2.IMREAD_GRAYSCALE))

filled_checkers = flood_fill(checkers,(0,0),50,tolerance=1)

fig,ax = plt.subplots(ncols=2,figsize=(10,5))

ax[0].imshow(checkers,cmap=plt.cm.gray,vmin=0,vmax=255)
ax[0].set_title('Original')

ax[1].imshow(filled_checkers,vmax=255)

ax[1].set_title('After flood fill')

plt.show()

我想要的https://i.stack.imgur.com/WuQAO.jpg

我得到的https://i.stack.imgur.com/P2pd0.jpg

解决方法

您需要传递connectivity=1作为参数。参见documentation for flood fill

selem:ndarray,可选

用于确定每个评估像素的邻域的结构元素。它只能包含1和0,并且具有与图片相同的尺寸。如果未给出,则所有相邻像素均被视为邻域(完全连接)的一部分。

连通性:int,可选

一个数字,用于确定每个评估像素的邻域。距中心平方距离小于或等于连通性的相邻像素被视为相邻像素。如果selem不为None,则将其忽略。

文档字符串中的示例部分还包含说明连接性的示例。