您的位置:首页 > 运维架构

Opencv drawContours函数用于绘制和填充

2016-04-20 21:14 330 查看
       在opencv中当我们使用一些基于连通域或者基于边沿信息的时候,往往会对contour进行处理除了利用findContours函数寻找连通域之外,也需要对连通域进行填充等操作这里介绍下drawContours函数,自己也是不断摸索和查阅了opencv相关手册

drawContours    在图像中绘制外部和内部的轮廓。

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:是得到的一系列点的集合;

contourIdx:是指定某个contours的点集;

color:被填充的颜色,单色可以设置为Scalar(255)等;

thickness: 所画Contour的线条宽度,如果为负或CV_FILLED则绘制所有的Contours;

lineType: 线的连通性;

hierarchy:可选层次信息结构,这里面是findContours所的到的基于Contours的层级信息;

maxLevel: 绘制轮廓的最大等级。如果等级为0,绘制单独的轮廓。如果为1,绘制轮廓及在其后的相同的级别下轮廓。如果值为2,所有的轮廓。如果等级为2,绘制所有同级轮廓及所有低一级轮廓,诸此种种。如果值为负数,函数不绘制同级轮廓,但会升序绘制直到级别为abs(max_level)-1的子轮廓

offset:照给出的偏移量移动每一个轮廓点坐标.当轮廓是从某些感兴趣区域(ROI)中提取的然后需要在运算中考虑ROI偏移量时,将会用到这个参数。

      比如我通过findContours函数得到了相应的vector<vector<cv::Point> > vecContours点集信息,要把这些点集信息画出来

binImage为要画的图片,binImage事先已经声明好了,例子如下:

binImage.setTo(0);
for ( size_t i = 0; i < vecContours.size(); i++ ){
cv::drawContours( binImage, vecContours, i, Scalar(255), CV_FILLED, 8, vector<Vec4i>(), 0, Point() );
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: