opencv2 floodFill函数详解

首先看函数原型:

int floodFill(InputOutputArray image, InputOutputArray mask, Point seedPoint,Scalar newVal, Rect* rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4 );


InputOutputArray这个接口类,第一说明输入是它输出也是它;第二,说明InputArray这个接口类可以是Mat、Mat_<T>、Mat_<T, m, n>、vector<T>、vector<vector<T>>、vector<Mat>。


seedPoint意思在于给定图像中的一点,该算法的起始点。


newVal是从起始点出发,对满足生长条件的点全部赋予一个新的颜色。而该生长条件由两个参数去确定,即loDiff(lower brightness/color difference)与upDiff。当前像素点与待比较像素点的负差和正差的最大值。


显然后4个参数都有默认值。

最后值的探究的参数就剩下mask和flags这两个参数。


mask顾名思义是掩膜,数字图像处理中的掩膜概念借鉴与PCB制版的过程,其作用是:在硅片上选定的区域中对一个不透明的图形模板遮盖,继而下面的腐蚀或扩散将只影响选定的区域以外的区域。那么图像处理中的意义也就在与此,对于掩膜中的非0像素,不予以处理。一般而言,这里的掩膜的大小要比原图像的长宽各大2个像素点的距离。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCVfloodFill函数是一个用于图像处理的功能,它可以在图像进行漫水填充操作。漫水填充是指从指定的种子点开始,将相邻的像素点按照一定的条件进行填充的过程。 在OpenCVfloodFill函数的使用方法如下: ```python cv2.floodFill(image, mask, seedPoint, newVal, loDiff, upDiff, flags) ``` - image:输入图像,可以是8位或32位的单通道图像。 - mask:掩码图像,用于指定填充区域。如果为None,则表示填充整个图像。 - seedPoint:种子点,即填充的起始点。 - newVal:填充的新值,可以是一个标量或一个长度与图像通道数相等的数组。 - loDiff:低差异值,用于指定填充区域的下边界。 - upDiff:高差异值,用于指定填充区域的上边界。 - flags:填充算法的标志,可以是4位或8位连接。 下面是一个使用floodFill函数进行漫水填充的示例代码[^1]: ```python import cv2 import numpy as np # 创建一个20*10像素的灰度图像 img = np.zeros((20, 10), dtype=np.uint8) # 填充图像 i = 0 for v in img: v[:] = i // 5 * 60 i += 1 # 指定种子点和填充的新值 seedPoint = (5, 5) newVal = 255 # 创建掩码图像 mask = np.zeros((img.shape + 2, img.shape + 2), dtype=np.uint8) # 进行漫水填充 cv2.floodFill(img, mask, seedPoint, newVal) # 显示填充后的图像 cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码首先创建了一个20*10像素的灰度图像,然后使用循环将图像的像素值按照一定的规律进行赋值。接着,指定了一个种子点和填充的新值,创建了一个掩码图像,并调用floodFill函数进行漫水填充操作。最后,显示填充后的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值