findContours
时间: 2023-10-14 13:24:56 浏览: 51
`findContours`是OpenCV库中的一个函数,用于在二值图像中寻找轮廓。该函数可以接受一个二值图像作为输入,将从图像中找到所有的轮廓,并将它们存储为一个向量。该函数可以用于许多计算机视觉应用程序中,例如目标跟踪,形状识别和图像分割等。
该函数的语法如下:
```
void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point());
```
其中,`image`表示输入的二值图像;`contours`是一个输出参数,表示找到的轮廓的向量;`hierarchy`是一个输出参数,其类型为`vector<Vec4i>`,表示轮廓之间的关系;`mode`表示轮廓检索模式,它可以是`CV_RETR_EXTERNAL`表示只检测外部轮廓,`CV_RETR_LIST`表示检测所有轮廓,`CV_RETR_TREE`表示检测所有轮廓并建立轮廓之间的整体关系;`method`表示轮廓近似方法,它可以是`CV_CHAIN_APPROX_NONE`表示保存所有的轮廓点,`CV_CHAIN_APPROX_SIMPLE`表示只保存轮廓的拐点,`CV_CHAIN_APPROX_TC89_L1`和`CV_CHAIN_APPROX_TC89_KCOS`表示使用Teh-Chin链逼近算法。
下面是一个示例代码,演示如何使用`findContours`函数找到一幅二值图像中的所有轮廓:
```python
import cv2
img = cv2.imread('image.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0, 0, 255), 3)
cv2.imshow('Contours', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文