C++ 发现轮廓并填充
时间: 2023-07-29 13:10:33 浏览: 94
VC++绘制几何图形,并实现填充
在 C++ 中,可以使用 OpenCV 库中的函数来发现轮廓并填充。下面是一个基本的示例代码:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("image.jpg");
cvtColor(img, img, COLOR_BGR2GRAY);
threshold(img, img, 127, 255, THRESH_BINARY);
std::vector<std::vector<Point>> contours;
std::vector<Vec4i> hierarchy;
findContours(img, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
Mat filled = Mat::zeros(img.size(), CV_8UC1);
for (size_t i = 0; i < contours.size(); i++) {
drawContours(filled, contours, i, Scalar(255), FILLED);
}
imshow("original", img);
imshow("filled", filled);
waitKey(0);
return 0;
}
```
这段代码首先读入一张图片并将其转换为灰度图像。然后使用 `threshold` 函数将图像二值化。接着调用 `findContours` 函数来查找轮廓,并将轮廓存储在 `contours` 向量中。最后使用 `drawContours` 函数将填充后的轮廓绘制在一张全黑的图像上,并显示原始图像和填充后的图像。
阅读全文