那如果我用cv2.findContours的时候不想要cv2.RETR_EXTERNAL怎么弄
时间: 2024-10-27 14:00:59 浏览: 33
如果你不想仅获取外边界框(即`cv2.RETR_EXTERNAL`),而是想获取所有的轮廓及其相互嵌套关系,你可以使用`cv2.RETR_LIST`选项。这样`findContours()`函数将返回一个轮廓列表,其中包含从大到小的所有轮廓,包括内部轮廓。
以下是相应的修改部分:
```python
contours, hierarchy = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
```
在这个返回的`hierarchy`变量中,你可以找到每个轮廓的父轮廓(如果存在)和其他关联信息。例如,`hierarchy[0]`通常是一个二进制掩码,可以用来判断两个轮廓是否相交等。
如果你想获取完整的轮廓树结构,可以使用`cv2.RETR_TREE`,这时`hierarchy`数组会有四个维度,用于描述更复杂的层次关系:
```python
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
请注意,随着获取的信息增加,处理和理解这些数据可能会变得复杂一些。
阅读全文
相关推荐











