opencv漫水填充演算法cvFloodFill()
阿新 • • 發佈:2019-01-22
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); }