C++ opencv 漫水填充 源代码
时间: 2023-07-04 11:30:14 浏览: 59
漫水填充(Flood Fill)是一种常用的图像处理技术,它可以用于图像分割、图像修复等方面。在OpenCV中,可以使用cv::floodFill()函数来实现漫水填充。下面是一个简单的示例代码,可以演示如何使用OpenCV实现漫水填充:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(){
Mat img = imread("image.jpg", IMREAD_COLOR); // 读取图片
if (img.empty()) {
cout << "Can't read image file." << endl;
return -1;
}
Mat mask(img.rows + 2, img.cols + 2, CV_8UC1, Scalar::all(0)); // 创建掩膜
Point seed(100, 100); // 设置种子点
Scalar new_color(0, 0, 255); // 设置新的颜色
int lo_diff = 20; // 低阈值
int up_diff = 20; // 高阈值
int connectivity = 4; // 连通性
int flags = connectivity | (new_color[0] << 8) | FLOODFILL_FIXED_RANGE | FLOODFILL_MASK_ONLY;
int area = floodFill(img, mask, seed, new_color, 0, Scalar(lo_diff, lo_diff, lo_diff), Scalar(up_diff, up_diff, up_diff), flags); // 进行漫水填充
imshow("Image", img); // 显示填充后的图片
waitKey(0);
return 0;
}
```
在这个示例中,我们读取了一张图片,并且定义了一个种子点seed和一个新的颜色new_color。然后,我们创建了一个掩膜mask,并且使用cv::floodFill()函数进行漫水填充操作。最后,我们将填充后的图片显示出来。
需要注意的是,这个示例只是一个简单的实现方式,实际应用中需要根据具体需求进行调整和优化。