原文:http://haofu123.blog.163.com/blog/static/17829492011826115419756/
- void cvFloodFill(
- IplImage* src,
- CvPoint seedPoint, //漫水法从点seedPoint开始实行算法
- CvScalar newVal, //像素点被染色的值
- CvScalar loDiff = cvScalarAll(0), //下标记--被染色的相邻点减去loDiff
- CvScalar upDiff = cvScalarAll(0), //上标记--被染色的相邻点加上upDiff
- CvConnectedComp* comp = NULL, //如果comp不是NULL,那么该CvConnectedComp被设置为被填充区域的统计属性
- int flags = 4, /*低八位可以被设置为4或者8,这个参数控制着填充算法的连通性,4表示在4个方向考虑连通性(上下左右),
- *8表示在8个方向考虑连通性(加上4个对角线方向),高八位可以设置CV_FLOODFILL_FIXED_RANGE,或者
- *CV_FLOODFILL_MASK_ONLY(如果设置只考虑填充MASK),flags的中间比特(8-15位)的值可以设置填充掩码的值
- *flags = 8 | CV_FLOODFILL_MASK_ONLY | CV_FLOODFILL_FIXED_RANGE | (43<<8)
- */
- CvArr* mask = NULL /*mask参数与其他有mask参数的使用方法一致,不同的是可以是作为该函数的输出值(指定应经被填充的区域)
- *如果mask非空,那么它必须是一个单通道,8位,像素宽度和高度均比源图像大两个像素的图像
- *(这是为使内部运算简单快速),cvFloodFill()不会覆盖mask中非0的区域
- */
- );
- 原文:http://blog.csdn.net/hitwengqi/article/details/6857443
-
- #include <highgui.h>
- #include <cv.h>
- int main(int argc, char** argv)
- {
- cvNamedWindow( "image" );
- IplImage* src = cvLoadImage( argv[1] );
- IplImage* img = cvCreateImage( cvGetSize(src), 8, 3 );
- cvCopyImage( src, img );
- cvFloodFill(
- img,
- cvPoint( 54, 82 ), //起始点
- CV_RGB( 255, 255, 255 ),//比较值
- cvScalar( 20, 30, 40, 0 ), //LOW
- cvScalar( 20, 30, 40, 0 ), //UP,每个通道比较的UP?
- NULL,
- 4,
- NULL
- );
- cvShowImage( "image", img );
- cvWaitKey(0);
- cvReleaseImage( &src );
- cvReleaseImage( &img );
- cvDestroyAllWindows();
- return 0;
- }