cv2.RETR_TREE 和 cv2.RETR_EXTERNAL
时间: 2024-08-14 12:05:00 浏览: 59
`cv2.RETR_TREE` 和 `cv2.RETR_EXTERNAL` 是 OpenCV(Computer Vision Library)中的两种图像轮廓检索模式,用于从二进制掩码中提取边缘像素并组织成轮廓。
- `cv2.RETR_TREE`(树状搜索,Retrieval as a Tree):这种模式会构建轮廓的树形结构,其中包含所有相互连接的轮廓。每个轮廓都与它的子轮廓相连,形成一个完整的轮廓树。这种方式适用于查找轮廓之间的层次关系,例如在分析分形形状时很有用。
- `cv2.RETR_EXTERNAL`(外部轮廓检索,Retrieval of External Contours Only):它只返回最外层的轮廓,也就是与其他轮廓无交集的最大包围轮廓。这种方式适用于简单的应用场景,只需提取单独的、孤立的轮廓,而不需要它们内部的嵌套关系。
当你使用`cv2.findContours()`函数时,可以通过设置`mode`参数来选择这两种检索模式之一。比如:
```python
contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
或者
```python
contours, hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
相关问题
contours.sort_contours函数怎么使用
contours.sort_contours函数是OpenCV中对轮廓进行排序的函数,可以对轮廓按指定的顺序进行排序。该函数的使用方法如下:
sort_contours(contours, method, reverse[, key])
其中,contours是一个包含所有轮廓的数组,method是排序的方式,可以是cv2.RETR_EXTERNAL(从外部到内部)、cv2.RETR_LIST(按照图像中轮廓的顺序)、cv2.RETR_CCOMP(两层,内层是空洞,外层是物体边界)、cv2.RETR_TREE(树形结构)等。
reverse表示是否反转排序,key是排序依据的参数。
示例代码如下:
contours, hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = contours.sort_contours(contours, method=cv2.CHAIN_APPROX_SIMPLE, reverse=False)
这段代码可以先使用cv2.findContours函数找到所有轮廓,然后使用sort_contours函数将其按照CHAIN_APPROX_SIMPLE方式进行排序。
myutils.sort_contours,详细介绍一下该函数的用法和各个参数含义
myutils.sort_contours 是一个用于对轮廓进行排序的函数,它可以按照一定的规则对轮廓进行排序,以便于后续的处理。该函数的参数含义如下:
- contours:需要排序的轮廓列表。
- method:排序方法,可以是 cv2.RETR_EXTERNAL、cv2.RETR_LIST、cv2.RETR_CCOMP、cv2.RETR_TREE 中的一种。
- reverse:是否反转排序结果。
- key:排序关键字,可以是 cv2.contourArea、cv2.arcLength 中的一种。
该函数的返回值是一个排序后的轮廓列表。
阅读全文