contours, hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
时间: 2024-01-13 22:59:21 浏览: 100
This line of code finds and retrieves contours from a binary image. The first argument is the input image (in this case, a binary image obtained from thresholding). The second argument specifies the retrieval mode, which determines the relationship between the contours and the hierarchy (parent-child relationships). The third argument specifies the contour approximation method, which determines the level of detail in the contours (in this case, no approximation is used).
The function returns two values: the contours themselves (as a list of arrays), and the hierarchy (a numpy array that describes the relationship between the contours).
相关问题
cv2.findContours参数
cv2.findContours()函数是用于在二值图像中查找轮廓的函数。它的参数如下:
- 第一个参数是输入图像,必须是单通道的二值图像。
-二个参数是轮廓检索模式,有四种可选模式:cv2.RETR_EXTERNAL表示只检测外轮廓,cv2.RETR_LIST检测的轮廓不建立等级关系,cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息,如果内孔内还有一个连通物体,这个物体的边界也在顶层。cv2.RETR_TREE建立一个等级树结构的轮廓。
- 第三个参数是轮廓近似方法,有三种可选方法:cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(dx),abs(dy))==1,cv2.CHAIN_APPROX_SIMPLE压缩水平方向、垂直方向和对角线方向的元素,只保留端点,例如一个矩形轮廓只需4个点来保存轮廓信息,cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法。
- 返回值有三个,第一个是轮廓本身,第二个是轮廓的层析结构,第三个是每个轮廓的近似值。
下面是一个cv2.findContours()的例子:
```python
import cv2
img = cv2.imread('example.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
cv2.findContours
cv2.findContours是OpenCV中的一个函数,用于在二进制图像中查找轮廓。它返回一个轮廓列表以及每个轮廓的层次结构。该函数采用以下参数:
- image:输入图像(必须为二进制图像,即黑白图像)。
- mode:轮廓检索模式,可以是cv2.RETR_EXTERNAL(只检测最外层轮廓)、cv2.RETR_LIST(检测所有轮廓,不建立轮廓间的等级关系)、cv2.RETR_TREE(检测所有轮廓,建立轮廓间的等级关系)。
- method:轮廓逼近方法,可以是cv2.CHAIN_APPROX_NONE(存储所有的轮廓点)、cv2.CHAIN_APPROX_SIMPLE(仅存储轮廓的端点)。
- contours:输出参数,表示检测到的轮廓。
- hierarchy:输出参数,表示轮廓的层次结构。
例如,以下代码展示了如何使用cv2.findContours函数:
```
import cv2
# 读取图像
img = cv2.imread('image.png', 0)
# 二值化处理
ret, thresh = cv2.threshold(img, 127, 255, 0)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文