首页 > 代码库 > 漫水填充算法 - cvFloodFill() 实现

漫水填充算法 - cvFloodFill() 实现

前言

  漫水填充算法是用来标记一片区域的:设置一个种子点,然后种子点附近的相似点都被填充同一种颜色。

  该算法应用性很广,比如目标识别,photoshop 的魔术棒功能等等,是填充类算法中应用最为广泛的一个算法。

漫水填充算法函数 - cvFloodFill()

  函数原型:

 1 void cvFloodFill ( 2     IplImage * img,         // 输入图像 3     CvPoint    seedPoint,    // 种子点 4     CvScalar newVal,       // 像素点被染色的值 5     CvScalar loDiff = cvScalarAll(0),     // 染色边界判定 6     CvScalar upDiff = cvScalarAll(0),     // 染色边界判定 7     CvConnectedComp * comp = NULL,        // 填充区域统计属性 8     int flags = 4,                        // 连通性,相关性等参数设置。 9     CvArr * mask = NULL                   // 掩码区域10 );

  参数特别说明:

  1. 掩码参数 mask 必须是一个单通道,8位,像素宽度高度均比原图像大两个像素。mask 图像的像素 (x+1, y+1) 与原图像 (x, y) 相对应。为 0 的位表示不进行处理。同时,掩码区也会返回填充结果。

  2. flags 参数提供更为强大的填充配置信息,详见相关资料。

运行结果

  

小结

  常用的一个填充算法。

漫水填充算法 - cvFloodFill() 实现