findcontours(image, contours, retr_external,//检索外部元素 chain_approx_none//每个轮廓的所有像素
可以提取图像中连续区域的轮廓(最好输入二值图像)
void drawContours(InputOutputArray image,
InputArrayOfArrays contours,
int contourIdx,
const Scalar& color,
int thickness=1,
int lineType=8,
InputArray hierarchy=noArray(),
int maxLevel=INT_MAX,
Point offset=Point() )
函数参数详解:
其中第一个参数image表示目标图像,
第二个参数contours表示输入的轮廓组,每一组轮廓由点vector构成,
第三个参数contourIdx指明画第几个轮廓,如果该参数为负值,则画全部轮廓,
第四个参数color为轮廓的颜色,
第五个参数thickness为轮廓的线宽,如果为负值或CV_FILLED表示填充轮廓内部,
第六个参数lineType为线型,
第七个参数为轮廓结构信息,
第八个参数为maxLevel
画出轮廓后,如果想要描述轮廓,(形状描述子)
当得到对象轮廓后,可用boundingRect()得到包覆此轮廓的最小正矩形,minAreaRect()得到包覆轮廓的最小斜矩形。
1)Rect boundingRect(InputArray points)
points:输入信息,可以为包含点的容器(vector)或是Mat。
2) RotatedRect minAreaRect(InputArray points)
points:输入信息,可以为包含点的容器(vector)或是Mat。
最小覆盖圆
void minEnclosingCircle(InputArray points, Point2f& center, float& radius)
参数详解:
InputArray points:输入的二维点集
Point2f& center:表示输出的圆形的中心坐标,是float型
float& radius:输出的最小圆的半径,是float型