qt OpenCV RETR_CCOMP 怎么取底层
时间: 2023-07-13 15:06:44 浏览: 155
使用 OpenCV 中的函数 findContours() 可以检测图像中的轮廓。当指定参数 mode 为 RETR_CCOMP 时,findContours() 函数将检测所有轮廓,并将它们分为两层。其中,外部轮廓存储在一级层级中,内部轮廓存储在二级层级中。
要访问 RETR_CCOMP 模式下的轮廓层级信息,可以使用 contourIdx 参数。这个参数是一个整数,用于指定轮廓在层级关系中的索引。如果该轮廓没有儿子轮廓,则 contourIdx 等于 -1。
下面是一个示例代码,展示了如何使用 RETR_CCOMP 模式获取轮廓层级信息:
```cpp
Mat image = imread("test.jpg", IMREAD_GRAYSCALE);
// 获取轮廓信息
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(image, contours, hierarchy, RETR_CCOMP, CHAIN_APPROX_SIMPLE);
// 访问轮廓层级信息
for(int i = 0; i < contours.size(); i++)
{
// 访问第一级轮廓
if(hierarchy[i][3] == -1)
{
// 处理外部轮廓
}
else
{
// 处理内部轮廓
}
}
```
在上面的示例代码中,我们使用 findContours() 函数获取了轮廓信息,并将它们存储在 vectors 中。然后,我们使用 hierarchy 向量访问轮廓层级信息。如果 hierarchy[i][3] 的值为 -1,则表示当前轮廓没有父轮廓,即它是一级轮廓,否则它是二级轮廓。
通过这种方式,我们可以轻松地访问 RETR_CCOMP 模式下的轮廓层级信息,并对它们进行相应的处理。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)