对与轮廓检测就是cv2.threshold,cv2.findContours,cv2.cvtColor,cv2.drawContours这几个函数的调用。下面就是代码及对这几个函数的解释:
import cv2
import numpy as np
img = np.zeros((200,200),dtype = np.uint8 )#构造一个两百行两两百列的矩阵
img[50:150,50:150]= 225 #把50到150行和50到150列赋值为225
# cv2.imshow('img',img)
# cv2.waitKey()
ret ,thresh = cv2.threshold('img',127,255,0)#选取一个全局阈值,然后就把整幅图像分成了非黑即白的二值图像
'''
cv2.threshold() 函数解释
这个函数有四个参数,第一个原图像,第二个进行分类的阈值,第三个是高于(低于)阈值时赋予的新值,第四个是一个方法选择参数,常用的有:
• cv2.THRESH_BINARY(黑白二值)
• cv2.THRESH_BINARY_INV(黑白二值反转)
• cv2.THRESH_TRUNC (得到的图像为多像素值)
• cv2.THRESH_TOZERO
• cv2.THRESH_TOZERO_INV
该函数有两个返回值,第一个retVal(得到的阈值值(在后面一个方法中会用到)),第二个就是阈值化后的图像。
'''
image,contours ,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
'''
cv2.threshold函数的解释
参数
第一个参数是寻找轮廓的图像;
第二个参数表示轮廓的检索模式,有四种(本文介绍的都是新的cv2接口):
cv2.RETR_EXTERNAL表示只检测外轮廓
cv2.RETR_LIST检测的轮廓不建立等级关系
cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。
cv2.RETR_TREE建