cvFloodFill漫水填充算法

来源:互联网 发布:知否全文免费阅读 编辑:程序博客网 时间:2024/04/30 05:24

原文:http://haofu123.blog.163.com/blog/static/17829492011826115419756/

  1. void cvFloodFill(  
  2. IplImage* src,  
  3. CvPoint seedPoint,  //漫水法从点seedPoint开始实行算法   
  4. CvScalar newVal,    //像素点被染色的值   
  5. CvScalar loDiff = cvScalarAll(0),   //下标记--被染色的相邻点减去loDiff   
  6. CvScalar upDiff = cvScalarAll(0),   //上标记--被染色的相邻点加上upDiff   
  7. CvConnectedComp* comp = NULL,   //如果comp不是NULL,那么该CvConnectedComp被设置为被填充区域的统计属性   
  8. int flags = 4,  /*低八位可以被设置为4或者8,这个参数控制着填充算法的连通性,4表示在4个方向考虑连通性(上下左右), 
  9. *8表示在8个方向考虑连通性(加上4个对角线方向),高八位可以设置CV_FLOODFILL_FIXED_RANGE,或者 
  10. *CV_FLOODFILL_MASK_ONLY(如果设置只考虑填充MASK),flags的中间比特(8-15位)的值可以设置填充掩码的值 
  11. *flags = 8 | CV_FLOODFILL_MASK_ONLY | CV_FLOODFILL_FIXED_RANGE | (43<<8) 
  12. */  
  13. CvArr* mask = NULL  /*mask参数与其他有mask参数的使用方法一致,不同的是可以是作为该函数的输出值(指定应经被填充的区域) 
  14. *如果mask非空,那么它必须是一个单通道,8位,像素宽度和高度均比源图像大两个像素的图像 
  15. *(这是为使内部运算简单快速),cvFloodFill()不会覆盖mask中非0的区域 
  16. */  
  17. );  

 

  1. 原文:http://blog.csdn.net/hitwengqi/article/details/6857443
    1. #include <highgui.h>   
    2. #include <cv.h>   
    3.   
    4. int main(int argc, char** argv)  
    5. {  
    6.     cvNamedWindow( "image" );  
    7.     IplImage* src = cvLoadImage( argv[1] );  
    8.   
    9.     IplImage* img = cvCreateImage( cvGetSize(src), 8, 3 );  
    10.     cvCopyImage( src, img );  
    11.   
    12.     cvFloodFill(  
    13.         img,  
    14.         cvPoint( 54, 82 ),  //起始点
    15.         CV_RGB( 255, 255, 255 ),//比较值  
    16.         cvScalar( 20, 30, 40, 0 ),  //LOW
    17.         cvScalar( 20, 30, 40, 0 ),  //UP,每个通道比较的UP?
    18.         NULL,  
    19.         4,  
    20.         NULL  
    21.         );  
    22.   
    23.     cvShowImage( "image", img );  
    24.     cvWaitKey(0);  
    25.     cvReleaseImage( &src );  
    26.     cvReleaseImage( &img );  
    27.     cvDestroyAllWindows();  
    28.   
    29.     return 0;  

 

原创粉丝点击