cv2.findContours参数怎么设置
时间: 2023-10-14 08:11:35 浏览: 68
cvFindContours
cv2.findContours函数的参数如下:
1. image:输入图像,通常为二值化后的图像(黑白),即只有黑色和白色两种颜色。可以使用cv2.threshold等函数进行二值化处理。
2. mode:轮廓检索模式,有四种模式可选:
- cv2.RETR_EXTERNAL:只检测最外层的轮廓,忽略内部的轮廓。
- cv2.RETR_LIST:检测所有的轮廓,但不建立轮廓间的等级关系。
- cv2.RETR_CCOMP:检测所有轮廓,建立两级轮廓结构,即外层轮廓和内层轮廓。
- cv2.RETR_TREE:检测所有轮廓,建立完整的轮廓层次结构。
3. method:轮廓逼近方法,有三种方法可选:
- cv2.CHAIN_APPROX_NONE:存储所有的轮廓点,相邻的两个点之间没有任何限制条件。
- cv2.CHAIN_APPROX_SIMPLE:仅存储轮廓的端点,相邻的两个点之间的距离必须大于等于1个像素。
- cv2.CHAIN_APPROX_TC89_L1 和 cv2.CHAIN_APPROX_TC89_KCOS:使用Teh-Chin链逼近算法中的一种。
4. contours:轮廓,是一个由点集组成的列表。
5. hierarchy:轮廓的层次结构,是一个含有四个元素的列表[hierarchy[Next], hierarchy[Previous], hierarchy[First_Child], hierarchy[Parent]]。其中hierarchy[Next]表示下一个轮廓的索引,hierarchy[Previous]表示上一个轮廓的索引,hierarchy[First_Child]表示第一个子轮廓的索引,hierarchy[Parent]表示父轮廓的索引。
示例代码:
```
import cv2
# 读取输入图像
img = cv2.imread('input.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.drawContours(img, contours, -1, (0, 0, 255), 2)
# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文