如何用我选择的颜色填充由黑色边框包围的位图的一部分?

时间:2012-04-05 09:50:41

标签: python graphics bitmap

我想使用python以编程方式修改位图,但并不需要彻底了解主题,所以我想集中精力学习完成工作所需的内容。

我所追求的那种事物的一个很好的例子是英格兰及其郡的位图。这最初会在白色背景上的所有县周围显示黑色边框。

到目前为止一切顺利,但我怎样才能动态改变一个县的背景颜色?

我认为我可能会发现一个类似于简单的绘图应用程序的泛滥填充例程。改变由指定颜色包围的区域内的所有像素的东西。我已经快速查看了PIL文档,但是没有找到任何我认为是洪水填充功能的东西?

我还不确切知道面具是什么或如何使用它但也许这是我应该探索的途径。也许我可以为每个县定义一个面具,然后使用面具来指导填充过程?是否可以在位图中定义和存储掩码以供我的程序以后使用?

路径相同???

非常感谢任何帮助或指示。

2 个答案:

答案 0 :(得分:6)

PIL有一个未记录的函数ImageDraw.floodfill

>>> import ImageDraw
>>> help(ImageDraw.floodfill)
Help on function floodfill in module ImageDraw:

floodfill(image, xy, value, border=None)
    Fill bounded region.

(洪水填充通常应该是最后的手段,因为它与抗锯齿线的交互性很差。通常最好获得县的实际边界数据,然后绘制填充的多边形。但是,PIL不支持除非您将绘图模块切换为更强大的功能,如PythonMagickpycairo,否则此建议无效。)

答案 1 :(得分:2)

您可以在python中尝试opencv绑定。以下是一些示例:http://opencv.willowgarage.com/documentation/python-introduction.html

然后,您可以使用cvFloodFill功能填充区域。