1、findContours(img,mode,method,[...])轮廓查找
-
mode查找轮廓的模式:
RETR_EXTERNAL=0(只检测外轮廓)
RETR_LIST=1(检测所有的轮廓)
RETR_CCOMP=2,每层最多两级,从里到外,从小到大;
RETR_TREE=3,按树型存储轮廓,从大到小,从右到左;
- method保存轮廓上的点
CHAIN_APPROX_NONE保存轮廓上所有的点
CHAIN_APPROX_SIMPLE只保存轮廓上角上的点
- 返回contours(轮廓)与hierachy(层级)
2、drawContours()绘制轮廓
import cv2
img = cv2.imread("img_1.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转灰度图
ret, dst = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 二值化
contours, hierarchy = cv2.findContours(dst, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) # 在二值化图像上搜索轮廓
cv2.drawContours(img, contours, -1, (0, 0, 255), 1) # drawContours()直接画出轮廓,下例是两个轮廓
cv2.imshow("img", img)
cv2.waitKey(0)
- contourIdx: 轮廓绘制指示变量(索引), 若为负值, 则表示绘制所有轮廓