cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)参数
时间: 2023-12-02 07:42:03 浏览: 37
`cv2.findContours()`是OpenCV中用于查找图像轮廓的函数。它的参数包括:
- 第一个参数:二值化图像,即黑白图像,其中要查找轮廓的对象应该是白色,背景应该是黑色。
- 第二个参数:轮廓检索模式,有以下几种可选:
- `cv2.RETR_EXTERNAL`:只检测外轮廓。
- `cv2.RETR_LIST`:检测的轮廓不建立等级关系。
- `cv2.RETR_CCOMP`:检测轮廓并将其组织为两级层次结构。具体来说,顶层是物体的外部边界,第二层是物体内部的空洞边界,如果物体内部还有其他物体,则再次检测其外部边界并将其作为第三层,以此类推。
- `cv2.RETR_TREE`:检测轮廓并重建整个轮廓层次结构。
- 第三个参数:轮廓逼近方法,有以下几种可选:
- `cv2.CHAIN_APPROX_NONE`:存储所有的轮廓点,相邻的两个点之间的像素位置差不超过1。
- `cv2.CHAIN_APPROX_SIMPLE`:仅存储水平、垂直和对角线方向的端点,例如一个矩形轮廓只需要4个点来存储。
- `cv2.CHAIN_APPROX_TC89_L1`和`cv2.CHAIN_APPROX_TC89_KCOS`:使用Teh-Chinl链逼近算法中的一种。这些方法可以更好地逼近曲线,但计算成本更高。
下面是一个示例:
```python
import cv2
# 读取图像并转换为灰度图像
img = cv2.imread('image.jpg')
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('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```