首先介绍下这个函数:
findContours函数,这个函数的原型为:
void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierar-
chy, int mode, int method, Point offset=Point())
参数说明:
第一个参数:输入图像image必须为一个2值单通道图像。
第二个参数:contours参数为检测的轮廓数组,每一个轮廓用一个point类型的vector表示。
第三个参数:hiararchy参数和轮廓个数相同,每个轮廓contours[ i ]对应4个hierarchy元素hierarchy[ i ][ 0 ] ~hierarchy[ i ][ 3 ],分别表示后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号,如果没有对应项,该值设置为负数。
第四个参数:mode表示轮廓的检索模式。有以下几种模式:
1.CV_RETR_EXTERNAL表示只检测外轮廓
2.CV_RETR_LIST检测的轮廓不建立等级关系
3.CV_RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。(简单的说就是检测双层轮廓)
4.CV_RETR_TREE建立一个等级树结构的轮廓。具体参考contours.c这个demo
第五个参数:method为轮廓的近似办法,主要有以下几种:
1.CV_CHAIN_APPROX_NONE存储所有的轮廓点,相邻