seed-filling种子填充法python的代码
时间: 2024-03-02 09:21:57 浏览: 150
以下是使用种子填充法实现的Python代码:
```
import numpy as np
def seed_filling(img, seed):
# 创建一个和原图像大小一样的全零矩阵作为输出
output = np.zeros_like(img)
# 将种子点的像素值赋为1
output[seed] = 1
# 创建一个队列,将种子点加入队列
queue = [seed]
# 定义一个八邻域的偏移量列表
neighbors = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]
# 使用循环进行种子填充
while queue:
# 取出队列中的第一个点
current_point = queue.pop(0)
# 遍历所有八邻域点
for neighbor in neighbors:
# 计算邻域点的坐标
neighbor_point = (current_point[0] + neighbor[0], current_point[1] + neighbor[1])
# 判断邻域点是否在图像范围内
if neighbor_point[0] >= 0 and neighbor_point[0] < img.shape[0] and neighbor_point[1] >= 0 and neighbor_point[1] < img.shape[1]:
# 判断邻域点是否已被填充
if output[neighbor_point] == 0:
# 判断邻域点是否与当前点像素值相同
if img[current_point] == img[neighbor_point]:
# 将邻域点的像素值赋为1
output[neighbor_point] = 1
# 将邻域点加入队列
queue.append(neighbor_point)
return output
```
希望能够帮助到您!
阅读全文