contours轮廓提取
binary,contours, hierarchy = cv2.findContours(binaryImg,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

1. cv2.findContours 函数使用示例
#!/usr/bin/python3 import cv2 import matplotlib.pyplot as plt img = cv2.imread('test.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),3) plt.imshow("img", img) plt.show()
2. cv2.findContours 函数输出
findContours 轮廓提取函数会返回值为:
[1] - image - 处理后的图像
[2] - contours - 检测到的轮廓的点集
[3] - hierarchy - 各层轮廓的索引
3. cv2.findContours 函数输入
cv2.findContours 函数有三个输入参数:
- 输入图像(二值图像)
- 轮廓检索方式
- 轮廓近似方法
[1] - 轮廓检索方式
| mode | 含义 |
|---|---|
| cv2.RETR_EXTERNAL | 只检测外轮廓信息 |
| cv2.RETR_LIST | 输出的轮廓间无等级关系,以list形式输出轮廓信息 |
| cv2.RETR_CCOMP | 输出两层轮廓信息,即内外两个边界. 上面一层为外边界,里面一层为内孔的边界信息 |
| cv2.RETR_TREE | 以树结构输出轮廓信息 |
| method | 含义 |
|---|---|
| cv2.CHAIN_APPROX_NONE | 存储所有边界点 |
| cv2.CHAIN_APPROX_SIMPLE | 压缩垂直、水平、对角方向,只保留端点 |
| cv2.CHAIN_APPROX_TX89_L1 | 使用teh-Chini近似算法 |
| cv2.CHAIN_APPROX_TC89_KCOS | 使用teh-Chini近似算法 |
cv2.drawContours(temp,contours,-1,(0,255,0),3)

浙公网安备 33010602011771号