【发布时间】:2017-09-06 20:32:59
【问题描述】:
我正在尝试编写一种方法来填充给定的形状,使其变为纯黑色。
示例: 这个最初只是一个轮廓的八边形将变成一个纯黑色的八边形,但是只要所有边缘都闭合,这应该适用于任何形状。
def img_filled(im_1, im_2):
img_fill_neg = ImageChops.subtract(im_1, im_2)
img_fill = ImageOps.invert(img_fill_neg)
img_fill.show()
我已经阅读了 10 倍以上的文档,并找到了其他几种操作图像的方法,但是我找不到填充图像中预先存在的形状的示例。我看到使用 floodfill() 是一种选择,虽然我不确定如何获取我想要填充的形状。
注意:我无权访问任何其他图像处理库来执行此任务。
【问题讨论】:
-
您可能没有使用“flood-fill”一词进行搜索,这听起来像是您想做的,即How to flood-fill part of a bitmap enclosed by a black border with my chosen color?
-
感谢 Nick T 的建议。我也浏览过该页面。我使用该方法遇到的问题是我无法弄清楚要抓住我要填充的形状。 floodfill(img, (x,y), value, border) 需要 4 个参数,我遇到了 (x,y) 的问题,因为我不想要特定的像素,而是想要整个形状。感谢您的任何建议。
-
我将把问题重述为“我如何在形状内找到一个点”或类似的东西。
-
你可以通过寻找轮廓找到形状。在您的图像中,您将有一个轮廓。完成后,您可以找到轮廓的质心,并使用该点进行填充操作。
标签: python image-processing python-imaging-library pillow