1、漫水填充的定义
用一种特定的颜色取填充连通区域,通过设置可连通像素的上下限以及连通方式来大道不同的填充效果。漫水填充是填充算法中较通用的算法
2、漫水填充的基本思想
选择一个种子点,然后把临近区域所有相似点填充上同样的颜色,结果是填充某个连续区域,被涂色像素点是位于给定范围内或者在种子像素值范围内的点。
3、漫水填充算法的函数--floodfill()
第一个版本的floodFill:
int floodFill(InputOutputArray image,Point seedPoint seedPoint,Scalar newVal,Rect* rect = 0,Scalar loDiff = Scalar(),Scalar upDiff = Scalar(),int flags = 4)
第二个版本的floodFill:
int floodFill(InputOutputArray image,InputOutputArray mask,Point seedPoint,Scalar newVal,Rect*rect = 0,Scalar loDiff = Scalar(),Scalar upDiff=Scalar(),int flags = 4)
第一种是不带掩膜的,第二种是带掩膜的
mask的要求:单通道,8位,长宽都比输入图像大两个像素点的图像。
Scalar类型的bewVal是填充的颜色
Rect*类的rect是可选参数,用于设置重绘区域的最小边界矩形区域
loDiff和upDiff是用来确定该被填充的像素的取值范围,loDiff是偏离种子像素的负值,upDiff是偏离种子像素的正值
最后一个参数flag,包括三个8位
低八位控制连通性:默认取4,也可以取8,取4则表示填
充只考虑水平和垂直方向,8则还包括对角线
高八位:可以为0或者取
(1)FLOODFILL_FIXED_RANGE:考虑当前像素与种子之
间的差。
(2)FLOODFILL_MASK_ONLY:只会去填充MASK图像
中八位:指定填充掩码图像的值,若为0,则掩码就用1来
填充
常用例子:
flags = 8|FLOODFILL_MASK_ONLY | FLOODFIL_FIXED_RANFE|(38<<8)
该函数的使用例子
Rect ccomp;
floodFill(src,Point(50,300),Scalar(155,255,55),&ccomp,Scalar(20,20,20),Scalar(20,20,20));
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved