cvFloodFill() 漫水填充演算法
阿新 • • 發佈:2019-01-30
感性認識為:畫圖板的填充工具和photoshop的容差索套工具混合而成的一個工具
函式原型:
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)),
CvConnectedComp* comp CV_DEFAULT(NULL),
int flags CV_DEFAULT(4),
CvArr* mask CV_DEFAULT(NULL));
image影象名稱;
seed_point從哪一點開始塗色;
new_val塗上的新顏色;
up_diff,lo_diff上下容差;
測試用圖:
程式程式碼:
#include <highgui.h> #include<cv.h> using namespace std; int main() { IplImage *img_in = cvLoadImage("test.jpg",3); IplImage *img_out =cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3); cvNamedWindow("img_in",CV_WINDOW_AUTOSIZE); cvShowImage("img_in",img_in); cvCopy(img_in,img_out); cvFloodFill(img_out,cvPoint(200,50),cvScalar(34,180,238),cvScalarAll(10),cvScalarAll(10)); cvFloodFill(img_out,cvPoint(80,330),cvScalar(34,180,238),cvScalarAll(20),cvScalarAll(10)); cvFloodFill(img_out,cvPoint(170,500),cvScalar(34,180,238),cvScalarAll(20),cvScalarAll(10)); cvFloodFill(img_out,cvPoint(500,600),cvScalar(34,180,238),cvScalarAll(50),cvScalarAll(50)); cvFloodFill(img_out,cvPoint(0,0),cvScalar(230,224,176),cvScalarAll(20),cvScalarAll(20)); cvFloodFill(img_out,cvPoint(500,0),cvScalar(230,224,176),cvScalarAll(20),cvScalarAll(20)); cvFloodFill(img_out,cvPoint(150,550),cvScalar(230,224,176),cvScalarAll(20),cvScalarAll(20)); cvFloodFill(img_out,cvPoint(140,600),cvScalar(230,224,176),cvScalarAll(20),cvScalarAll(20)); cvFloodFill(img_out,cvPoint(330,320),cvScalar(181,228,255),cvScalarAll(10),cvScalarAll(5)); cvFloodFill(img_out,cvPoint(200,350),cvScalar(181,228,255),cvScalarAll(10),cvScalarAll(5)); cvNamedWindow("img_out",CV_WINDOW_AUTOSIZE); cvShowImage("img_out",img_out); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&img_in); cvReleaseImage(&img_out); return 0; }
執行結果: