Imgproc.findContours 参数
时间: 2023-07-25 21:06:17 浏览: 157
OpenCV 中的 `findContours` 函数用于在二值图像中查找轮廓。它的函数原型如下:
```python
contours, hierarchy = cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
```
其中,参数含义如下:
- `image`:输入二值图像;
- `mode`:轮廓检索模式,有以下几种选项:
- `cv.RETR_EXTERNAL`:只检索最外层的轮廓;
- `cv.RETR_LIST`:检索所有的轮廓,并将其保存到列表中;
- `cv.RETR_CCOMP`:检索所有轮廓,并将其组织成两层的层次结构;
- `cv.RETR_TREE`:检索所有轮廓,并将其组织成完整的层次结构;
- `method`:轮廓逼近方法,有以下几种选项:
- `cv.CHAIN_APPROX_NONE`:存储所有的轮廓点;
- `cv.CHAIN_APPROX_SIMPLE`:仅存储轮廓的端点;
- `cv.CHAIN_APPROX_TC89_L1`:使用 Teh-Chin 链逼近算法;
- `cv.CHAIN_APPROX_TC89_KCOS`:使用 Teh-Chin 链逼近算法,并使用 Kohli-Chen 角点检测算法;
- `contours`:输出参数,保存检测到的轮廓;
- `hierarchy`:输出参数,保存轮廓的层次结构信息;
- `offset`:可选参数,轮廓偏移量。
例如,以下代码可以在二值图像中查找轮廓并绘制出来:
```python
import cv2 as cv
img = cv.imread('image.png')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
ret, thresh = cv.threshold(gray, 127, 255, 0)
contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
cv.drawContours(img, contours, -1, (0, 0, 255), 2)
cv.imshow('Contours', img)
cv.waitKey(0)
```
阅读全文