1. 程式人生 > >opencv漫水填充演算法cvFloodFill()

opencv漫水填充演算法cvFloodFill()

CVAPI(void)  cvFloodFill( 

  CvArr* image,//輸入影象

  CvPoint seed_point,//輸入種子點的座標

  CvScalar new_val,//輸入畫素點被染為什麼顏色

  CvScalar lo_diff CV_DEFAULT(cvScalarAll(0)),

  CvScalar up_diff CV_DEFAULT(cvScalarAll(0)),

//輸入染色範圍。如果一個畫素點的值不低於被染色相鄰點減去lo_diff,且不高於其加上

//up_diff那麼這個像素點將被染色。

  CvConnectedComp* comp CV_DEFAULT(NULL),

//指向部件結構體的指標,該結構體的內容由函式用重繪區域的資訊填充。

   int flags CV_DEFAULT(4),

//低八位控制演算法連通性,一般為4聯通或8聯通,高8位可以固定畫素值範圍

   CvArr* mask CV_DEFAULT(NULL));

//掩碼,若非空則必須是一個單通道,8位,寬和高都比源影象大兩個畫素的影象。mask中

//的非零畫素點不會被染色。

<pre name="code" class="cpp">#include <iostream>  
#include <cv.h>  
#include <highgui.h>  

using namespace cv;
using namespace std;
int main()  
{
	IplImage *img = cvLoadImage("C:\\Users\\asus\\Desktop\\DIP\\image\\people.jpg",0);
	IplImage *img2 = cvLoadImage("C:\\Users\\asus\\Desktop\\DIP\\image\\people.jpg",0);
	IplImage *temp = cvCreateImage(cvGetSize(img),8,1);
	cvSmooth(img2,img2);
	cvFloodFill(img2,cvPoint(325,244),cvScalar(255),cvScalar(2),cvScalar(2),0,8);//漫水填充法
	cvNamedWindow("src");
	cvNamedWindow("result");
	cvShowImage("src",img);
	cvShowImage("result",img2);
	cvSaveImage("C:\\Users\\asus\\Desktop\\1.jpg",img2);
	waitKey(5000);
	cvDestroyAllWindows();
	cvReleaseImage(&img);
	cvReleaseImage(&img2);
	cvReleaseImage(&temp);

}