opencv findContours()各参数意义
时间: 2023-11-04 16:09:53 浏览: 187
opencv轮廓(contour)检测
4星 · 用户满意度95%
`findContours()` 函数是 OpenCV 中用于查找轮廓的函数。其函数原型如下:
```
cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy
```
其中各参数的含义如下:
- `image`:输入的二值化图像(一般是经过 `threshold()` 或 `Canny()` 函数处理后的结果)。
- `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`:使用 Teh-Chin 链逼近算法。
- `cv2.CHAIN_APPROX_TC89_KCOS`:使用 Teh-Chin 链逼近算法。
- `contours`:检测到的轮廓,是一个 Python 列表,每个元素都是一个轮廓的点集。
- `hierarchy`:轮廓的层次信息,是一个包含每个轮廓的父子关系和内部/外部关系的 numpy 数组。
- `offset`:可选参数,表示轮廓坐标的偏移量。
在使用 `findContours()` 函数时,需要注意以下几点:
- `image` 必须是一个二值化图像,即只有 0 和 255 两个值。
- `contours` 和 `hierarchy` 都是输出参数,需要使用赋值语句来接收。
- 在 `RETR_CCOMP` 和 `RETR_TREE` 两种模式下,每个轮廓都包含了两个子轮廓,因此需要使用循环语句来遍历所有轮廓。
- 在使用 `RETR_TREE` 模式时,可以通过 `hierarchy` 参数获取每个轮廓的父子关系和内部/外部关系。
阅读全文