opencv 子轮廓 c++
时间: 2023-07-07 08:43:39 浏览: 85
OpenCV中的 `findContours()` 函数可以用来查找轮廓。如果想要获取轮廓的子轮廓,可以使用 `hierarchy` 参数来获取子轮廓的信息。以下是一个示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("image.jpg");
Mat gray, bin;
cvtColor(img, gray, COLOR_BGR2GRAY);
threshold(gray, bin, 0, 255, THRESH_BINARY | THRESH_OTSU);
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(bin, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
for (int idx = 0; idx >= 0; idx = hierarchy[idx][0])
{
Scalar color(rand() & 255, rand() & 255, rand() & 255);
drawContours(img, contours, idx, color, FILLED, 8, hierarchy);
}
imshow("Contours", img);
waitKey(0);
return 0;
}
```
在此示例中,我们首先将图像转换为灰度图像并对其进行二值化。然后使用 `findContours()` 函数查找所有轮廓,并使用 `hierarchy` 参数获取子轮廓信息。最后,我们使用 `drawContours()` 函数绘制所有子轮廓。
阅读全文