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)

 

posted @ 2021-09-09 09:12  Liang-ml  阅读(139)  评论(0)    收藏  举报