问题描述
这些是我用于填充图像的代码,所以我想要的只是颜色值为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,则将其忽略。
文档字符串中的示例部分还包含说明连接性的示例。