| method | 描述 |
| cv2.CHAIN_APPROX_NONE | 获取每个轮廓的每个像素,相邻的两个点的像素位置差不超过1 |
| cv2.CHAIN_APPROX_SIMPLE | 压缩水平方向,垂直方向,对角线方向的元素,值保留该方向的重点坐标,如果一个矩形轮廓只需4个点来保存轮廓信息 |
| cv2.CHAIN_APPROX_TC89_L1 | 使用Teh-Chini chain近似算法 |
| cv2.CHAIN_APPROX_TC89_KCOS | 使用Teh-Chini chain近似算法 |
1.1 contour返回值
cv2.findContours()函数首先返回一个list,list中每个元素都是图像中的一个轮廓信息,list中每个元素(轮廓信息)类型为ndarray。len(contours[1]) 表示第一个轮廓储存的元素个数,即该轮廓中储存的点的个数。
1.2 hierarchy返回值
该函数还可返回一个可选的hiararchy结果,这是一个ndarray,其中的元素个数和轮廓个数相同,每个轮廓contours[i]对应4个hierarchy元素hierarchy[i][0] ~hierarchy[i][3],分别表示后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号,如果没有对应项,则该值为-1。
- 第一个数:表示同一级轮廓的下个轮廓的编号,如果这一级轮廓没有下一个轮廓,一般是这一级轮廓的最后一个的时候,则为-1。
- 第二个数:表示同一级轮廓的上个轮廓的编号,如果这一级轮廓没有上一个轮廓,一般是这一级轮廓的第一个的时候,则为-1。
- 第三个数:表示该轮廓包含的下一级轮廓的第一个的编号,假如没有,则为-1。
- 第四个数: 表示该轮廓的上一级轮廓的编号,假如没有上一级,则为-1。
1.3 栗子
img:
- 以一个参数去接收返回值,则该参数会接收三个返回值
import cv2
img = cv2.imread('../../DAVIS-2016/Annotations/1080p/flamingo/00007.png', 0)
img = cv2.resize(img, (16, 16))
returns = cv2.findContours(img,