泛洪填充(Flood Fill)

图像形态学是图像处理中的一种基础技术,泛洪填充(Flood Fill)是其中的一种操作,用于在图像中填充特定区域。

原理和作用

原理

泛洪填充是基于种子点开始的区域生长算法。它从一个种子点开始,通过选择相邻像素并根据一定条件改变其像素值来扩展填充区域,直到满足某个停止条件为止。

作用
  • 填充图像中的特定区域,例如选择的颜色或区域。
  • 用于分割图像和对象检测。
  • 在图像编辑中创建掩模或选择区域。

适用场景

  • 图像分割和区域填充。
  • 用于交互式图像编辑中的颜色填充、选择和分割。

泛洪填充函数可以使用以下伪代码表示:

plaintext 复制代码
FloodFill(image, seed_point, new_color, connectivity)
    Create a queue Q
    Set visited[ ] as an empty array to keep track of visited pixels

    Append seed_point to Q

    while Q is not empty do
        current_point = Q.pop()
        if current_point is within the image and not visited[current_point] then
            if pixel at current_point is similar to seed_point's color then
                Set pixel at current_point to new_color

                Add current_point to visited
                Add neighboring pixels of current_point to Q based on specified connectivity
            end if
        end if
    end while

示例代码

下面是使用Python和OpenCV库进行泛洪填充的示例代码:

python 复制代码
import cv2
import numpy as np

def show_images(image):
    cv2.namedWindow('image',cv2.WINDOW_KEEPRATIO)
    cv2.imshow('image',image)
    cv2.waitKey()
    cv2.destroyAllWindows()

def Flood_Fill(image):
    # 选择种子点
    seed_point = (50, 50)
    # 设置填充颜色
    new_color = (0, 255, 0)  # 绿色
    # 执行泛洪填充
    result = image.copy()
    cv2.floodFill(result, None, seed_point, new_color)
    return result

if __name__ == '__main__':
    # 读取图像
    img = cv2.imread('cat-dog.png', flags=0)
    re_img=Flood_Fill(img)
    # top_row = np.hstack((img, re_img[0]))
    # bottom_row = np.hstack((re_img[1], re_img[2])) #水平
    # combined_img = np.vstack((img, re_img))# 垂直
    combined_img=np.hstack((img,re_img))
    show_images(combined_img)

以上代码中,cv2.floodFill() 函数用于执行泛洪填充操作。您需要将 input_image.jpg 替换为您自己的图像文件路径,并根据需要调整种子点和填充颜色。

请注意,以上代码仅供示例参考,实际应用中可能需要根据具体情况进行调整和优化。

相关推荐
思绪无限7 小时前
YOLOv5至YOLOv12升级:木材表面缺陷检测系统的设计与实现(完整代码+界面+数据集项目)
人工智能·深度学习·目标检测·计算机视觉·木材表面缺陷检测
kishu_iOS&AI7 小时前
深度学习 —— 损失函数
人工智能·pytorch·python·深度学习·线性回归
好运的阿财7 小时前
OpenClaw工具拆解之canvas+message
人工智能·python·ai编程·openclaw·openclaw工具
wengqidaifeng7 小时前
python启航:1.基础语法知识
开发语言·python
TechubNews7 小时前
新火集团首席经济学家付鹏演讲——2026 年是 Crypto 加入到 FICC 资产配置框架元年
大数据·人工智能
观北海7 小时前
Windows 平台 Python 极简 ORB-SLAM3 Demo,从零实现实时视觉定位
开发语言·python·动态规划
FreakStudio7 小时前
做了个Claude Code CLI 电子宠物:程序员的实体监工代码搭子
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
柴米油盐那点事儿7 小时前
python+mysql+bootstrap条件搜索分页
python·mysql·flask·bootstrap
蒸汽求职7 小时前
跨越 CRUD 内卷:半导体产业链与算力基建下的软件工程新生态
人工智能·科技·面试·职场和发展·软件工程·制造
DeepModel8 小时前
通俗易懂讲透 Q-Learning:从零学会强化学习核心算法
人工智能·学习·算法·机器学习