c++版opencv如何填充图像中的孔洞
时间: 2024-03-17 08:41:33 浏览: 86
C++ Opencv imfill 孔洞填充函数
5星 · 资源好评率100%
在C++版OpenCV中,可以使用cv::findContours()函数找到图像中的轮廓,然后使用cv::drawContours()函数来填充孔洞。
具体步骤如下:
1. 读入图像并转为灰度图像。
```c++
cv::Mat img = cv::imread("input.jpg");
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);
```
2. 对灰度图像进行二值化处理。
```c++
cv::Mat binary;
cv::threshold(gray, binary, 0, 255, cv::THRESH_BINARY_INV | cv::THRESH_OTSU);
```
3. 找到图像中的轮廓。
```c++
std::vector<std::vector<cv::Point>> contours;
cv::findContours(binary, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
```
4. 对每个轮廓进行绘制。
```c++
for (size_t i = 0; i < contours.size(); i++) {
cv::drawContours(img, contours, i, cv::Scalar(255, 255, 255), cv::FILLED);
}
```
5. 显示结果。
```c++
cv::imshow("Result", img);
cv::waitKey(0);
```
注意:在使用cv::drawContours()函数时,需要指定填充颜色(本例中为白色)以及填充方式(本例中为cv::FILLED)。
阅读全文