用python编写代码,实现4连通种子边界填充算法
时间: 2024-12-01 08:29:59 浏览: 13
基于Python设计的光栅图形学作业【100011865】
在Python中实现4连通种子边界填充算法,你可以使用邻接矩阵或邻接列表数据结构来跟踪相邻的像素。这里是一个简单的版本,我们假设输入是一个二维列表表示的图像矩阵:
```python
def is_valid(x, y, matrix):
# 检查x和y坐标是否有效
return x >= 0 and x < len(matrix) and y >= 0 and y < len(matrix[0])
def fill_seeds(matrix, seeds):
def neighbors(x, y):
for dx, dy in [(0, -1), (0, 1), (-1, 0), (1, 0)]:
nx, ny = x + dx, y + dy
if is_valid(nx, ny, matrix):
yield nx, ny
visited = set()
queue = [(s[0], s[1]) for s in seeds] # 将所有初始种子加入队列
while queue:
x, y = queue.pop(0)
if (x, y) not in visited:
visited.add((x, y))
matrix[x][y] = 1 # 标记为已填充
for nx, ny in neighbors(x, y):
if matrix[nx][ny] == 0 and (nx, ny) not in visited:
queue.append((nx, ny))
# 使用示例
matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
seeds = [(0, 0), (1, 1)] # 起始种子点
fill_seeds(matrix, seeds)
# 打印填充后的矩阵
for row in matrix:
print(' '.join(['1' if cell else '0' for cell in row]))
```
这个函数会将给定的起始种子点周边的所有空位置(值为0)填充为1,表示已填充区域。
阅读全文