findContours主要是用来查找图像的轮廓
图像轮廓是指图像中物体边缘的连续性曲线。在计算机视觉和图像处理中,轮廓通常被用于检测物体、分割图像以及提取物体特征。
图像轮廓是由一系列连续的像素点组成,这些像素点位于物体边界上。轮廓的特点是在物体和背景之间的边界位置,因此可以用来表示物体的形状和结构。轮廓可以是闭合的,也可以是开放的,具体取决于物体的形状。
image, contours, hierarchy = cv2.findContours( image, mode, method)
参数:
image:原始图像。8 位单通道图像,所有非零值被处理为 1,所有零值保持不变。也就是说灰度图像会被自动处理为二值图像。
在实际操作时,可以根据需要,预先使用阈值处理等函数将待查找轮廓的图像处理为二值图像。
mode:轮廓检索模式。
cv2.RETR_EXTERNAL:只检测外轮廓。
cv2.RETR_LIST:对检测到的轮廓不建立等级关系。
cv2.RETR_CCOMP:检索所有轮廓并将它们组织成两级层次结构。上面的一层为外边界,下面的一层为内孔的边界。
如果内孔内还有一个连通物体,那么这个物体的边界仍然位于顶层。
cv2.RETR_TREE:建立一个等级树结构的轮廓。
method:轮廓的近似方法。
cv2.CHAIN_APPROX_NONE:存储所有的轮廓点,相邻两个点的像素位置差不超过 1,即 max(abs(x1-x2),abs(y2-y1))=1。
cv2.CHAIN_APPROX_SIMPLE:压缩水平方向、垂直方向、对角线方向的元素,只保留该方向的终点坐标。
例如,在极端的情况下,一个矩形只需要用 4 个点来保存轮廓信息。
cv2.CHAIN_APPROX_TC89_L1:使用 teh-Chinl chain 近似算法的一种风格。
cv2.CHAIN_APPROX_TC89_KCOS:使用 teh-Chinl chain 近似算法的一种风格。
返回:
image:与函数参数中的原始图像 image 一致。
contours:返回的轮廓。
hierarchy:图像的拓扑信息(轮廓层次)。