原图,以下均以此图为例。
函数原型:
CV_EXPORTS_W void findContours( InputOutputArray image, OutputArrayOfArrays contours,
OutputArray hierarchy, int mode,
int method, Point offset = Point());
1)要求输入是一个8位单通道的二值图像
二值图像与灰度图并不同,二值图像的像素值为1和0;而灰度图的像素值从0-255,二值图和灰度图的相似处都是单通道的图。
此图为典型的二值图像。对比原图可知,原图中颜色较深的地方,二值图中为白色,值为1,黑色值为0;
要注意一点,此函数在提取图像轮廓的同时会修改图像的内容,换句话说, InputOutputArray image是一个指针,
2)输出,因为函数是void类型,无返回值,而函数从 OutputArrayOfArrays contours输出,可知,输出参数也是一个指针,满足向外传输特性。
再来看看输出的结果是什么?
1)首先输出的结果是一个矩阵vector,一个vector类型的指针指向该矩阵,
2)矩阵中保存着从输入的图像中检测到的轮廓值,为向量的组合,通俗的讲就是图像中的轮廓点的位置(x,y),这些点共同组成了提取
到的轮廓。
contours中的值就是图中白色的轮廓线(有单个像素点组成)。
未完待续》。。。