void findContours( InputOutputArray image, OutputArrayOfArrays contours,
OutputArray hierarchy, int mode,
int method, Point offset = Point());
函数功能:在二值图像中查找轮廓。
轮廓检测的作用:轮廓检测常用于形状分析以及物体检测与识别。可参考opencv示例程序squares.cpp
opencv3.2之前,该函数功能没有改变。
第一个参数image: 输入的二值图像。
第二个参数contours: 检测得到的轮廓,轮廓保存在二维向量中。
第三个参数hierarchy: 对于检测到的每一个轮廓,都包含4个轮廓结构关系。我暂时理解为轮廓之间的对应关系,具体什么作用没有仔细研究过。所使用的代码只是用于保存轮廓关系,还没有使用到这个轮廓关系。
第四个参数mode: 轮廓检索模式。一般使用枚举的数据类型,参数为0-4总共5中模式。RETR_EXTERNAL=0只检索极端的外部轮廓, 它为[hierarchy] [i] [2] = hierarchy [i] [3] = - 1设置所有的轮廓。RETR_LIST= 1,检索所有轮廓而不建立任何轮廓关系。模式2 , 检索所有轮廓,并将它们组织成两级分层结构。在顶部级别,组件的外部边界。 在第二级,有洞的边界。如果在连接组件的孔内还有另一个轮廓,仍然处于最高水平。模式3,检测所有轮廓,并且重建嵌套轮廓的完整层次结构。
第五个参数method: 等值逼近。 method=2, 压缩水平线,垂直线,和对角线线段。