cv2.findContours() 返回值
时间: 2024-07-14 19:01:27 浏览: 184
`cv2.findContours()` 是 OpenCV 中的一个函数,用于在二进制图像中查找轮廓。该函数通常用于形状检测、物体识别等计算机视觉任务。它的返回值是一个包含三个元素的元组:
1. **contours**: 这是一个列表,包含了找到的所有轮廓信息。每个轮廓都是一个二维数组,表示轮廓的边界点顺序。
2. **hierarchy**: 这是一个嵌套列表,描述了轮廓之间的层次关系。它包含了四个级别的信息:`level`, `parent`, `next`, 和 `previous`。`level` 指的是轮廓在整个轮廓结构中的层级,`parent` 表示当前轮廓的直接父轮廓,`next` 和 `previous` 分别指向下一级别的下一个和上一个轮廓。
3. **image\_contours**: 如果在原始图像上调用 findContours,并且参数设置为 True,则这个值会是输入的原图像,而不是处理后的结果。
需要注意的是,如果在灰度图像上寻找轮廓,需要先通过 `cv2.threshold()` 或其他方法将其转换为二进制图像。另外,由于历史版本的差异,`findContours` 的某些参数和返回值格式可能会有所不同。
相关问题
cv2.findContours返回值
cv2.findContours函数返回三个值:contours、hierarchy、image。其中,contours是一个列表,包含了所有检测到的轮廓,每个轮廓是一个由点组成的numpy数组;hierarchy是每个轮廓的层次结构,包含了每个轮廓的父子关系信息;image是输入的二值化图像。如果没有找到任何轮廓,那么contours将会是一个空列表,hierarchy将会是一个空数组,image将会是输入的二值化图像。
cv2.findContours的参数以及返回值
cv2.findContours() 是 OpenCV 中用于在二值图像中查找轮廓的函数。它的语法如下:
```
contours, hierarchy = cv2.findContours(image, mode, method, offset)
```
其中,参数含义如下:
- `image`:输入二值图像,要求为灰度图像,即只有 0 和 255 两种像素值。
- `mode`:轮廓检索模式,有以下几种可选模式:
- `cv2.RETR_EXTERNAL`:只检测外轮廓;
- `cv2.RETR_LIST`:检测所有轮廓,但不建立轮廓之间的关系;
- `cv2.RETR_CCOMP`:检测所有轮廓,并将其组织为两层,即外层和内层;
- `cv2.RETR_TREE`:检测所有轮廓,并重构轮廓之间的完整层次关系。
- `method`:轮廓逼近方法,有以下几种可选方法:
- `cv2.CHAIN_APPROX_NONE`:保存所有轮廓点;
- `cv2.CHAIN_APPROX_SIMPLE`:仅保存轮廓的端点;
- `cv2.CHAIN_APPROX_TC89_L1`、`cv2.CHAIN_APPROX_TC89_KCOS`:使用 Tang-Chen 算法进行逼近。
- `offset`:可选参数,表示轮廓坐标点的偏移量。
返回值:
- `contours`:检测到的轮廓,是一个包含所有轮廓的列表,每个轮廓由一组点坐标表示;
- `hierarchy`:轮廓之间的层次关系,是一个包含每个轮廓的父子关系、前后关系等信息的列表。
阅读全文