在上一篇的博文中,我们主要给出了cvFindContours()和cvDrawContours()函数的基本用法,结合示例程序,分析了获得图像轮廓和画出显示轮廓的大致的程序思路。在获取轮廓之后,我们要重点分析轮廓的一些性质。轮廓有很多特性,下面我们来逐一看这方面的特性。
(1)轮廓的多边形逼近
轮廓的多边形逼近指的是,使用多边形近似地来表示一个轮廓,这样做的目的在于减少轮廓的顶点数目。OpenCV中给出了一个逼近算法,这个算法的实现函数是cvApproxPoly()。
CvSeq* cvApproxPoly(
const void* src_seq,
int header_size,
CvMemStorage* storage,
int method,//method的取值上篇博文中介绍了
double parameter, //表示逼近的精度
int recursive=0 //指定是否针对全部的轮廓,取0表示只处理src_seq指向轮廓
);
简要介绍这个逼近算法的思路,如下图所示: