种子填充算法用代码实现
时间: 2024-02-19 14:57:50 浏览: 74
python实现种子填充算法.zip
3星 · 编辑精心推荐
以下是一个简单的种子填充算法的示例代码:
```python
def seed_fill(image, seed_point, fill_color):
# 获取图像的宽度和高度
width, height = image.shape[:2]
# 创建一个与图像大小相同的标记图像,用于记录已经填充的像素
filled = np.zeros((width, height), dtype=bool)
# 创建一个栈,用于存储待填充的像素
stack = [(seed_point[0], seed_point[1])]
# 循环直到栈为空
while stack:
# 从栈中取出一个像素
x, y = stack.pop()
# 检查像素是否已经被填充过
if not filled[x, y]:
# 将像素标记为已填充
filled[x, y] = True
# 将像素的颜色设置为填充颜色
image[x, y] = fill_color
# 检查上方的像素
if x > 0 and not filled[x-1, y]:
stack.append((x-1, y))
# 检查下方的像素
if x < width-1 and not filled[x+1, y]:
stack.append((x+1, y))
# 检查左侧的像素
if y > 0 and not filled[x, y-1]:
stack.append((x, y-1))
# 检查右侧的像素
if y < height-1 and not filled[x, y+1]:
stack.append((x, y+1))
```
这个函数接受三个参数:一个图像、一个种子点和一个填充颜色。它使用一个栈来存储待填充的像素,并使用一个标记数组来避免重复填充像素。在循环中,它从栈中取出一个像素,并检查它的四个相邻像素是否需要填充。如果相邻像素需要填充,则将它们添加到栈中等待处理。如果像素已经被填充过,则跳过它并继续处理栈中的下一个像素。
阅读全文