一. 实验描述
对OpenCV的漫水填充进行简单的使用。
二. 实验代码
//漫水填充
class Task14 {
public:
void deal() {
Mat src_img = imread("img\\1.jpg");
imshow("漫水填充[原图]", src_img);
int flags = 4 + (255 << 8) + CV_FLOODFILL_FIXED_RANGE;
// int flags = 4 + (255 << 8) + (CV_FLOODFILL_FIXED_RANGE | CV_FLOODFILL_MASK_ONLY);
Mat clone_img1 = src_img.clone();
Rect ccomp1;
floodFill(clone_img1, Point(50, 50), Scalar(155, 255, 55), &ccomp1, Scalar(5, 5, 5), Scalar(5, 5, 5), flags);
imshow("漫水填充[效果图1]", clone_img1);
Mat clone_img2 = src_img.clone();
Rect ccomp2;
Mat mask_img;
mask_img.create(clone_img2.rows + 2, clone_img2.cols + 2, CV_8UC1);
threshold(mask_img, mask_img, 1, 128, THRESH_BINARY);
int area = floodFill(clone_img2, mask_img, Point(50, 50), Scalar(155, 255, 55), &ccomp2, Scalar(5, 5, 5), Scalar(5, 5, 5), flags);
imshow("漫水填充[效果图2]", mask_img);
cout << "填充区域: " << area << endl;
waitKey(0);
}
};