OpenCV中的图形绘制
OpenCV在Core模块中支持多种图形绘制与填充,方便开发者在图像对象识别与检测之后通过特定的图形轮廓加以显式表示。常见的几何形状包括线、矩形、圆形、椭圆,此外还支持文字显示。下面就让我们从API方法开始一步一步通过代码演示这些常见几何形状绘制与填充。首先我们要创建一张黑色背景图,代码如下:
画线 - cv::line API方法参数说明
参数src
表示线段绘制的目标图像, Mat类型数据
参数pt1
表示线段起始点屏幕坐标,Point类型数据
参数pt2
表示线段结束点屏幕坐标,Point类型数据
参数 color
表示绘制线段的颜色, Scalar类型
参数 thickness
默认为1,表示线段的粗细,值越大,画出来的线段越宽,int 类型。
参数 lineType
默认为8, 表示线段的每个像素点8连通方式提供渲染,此外值还可以是LINE_4或者LINE_AA其中LINE_AA表示反锯齿方式渲染绘制线段。
参数 shift
默认为0,表示线段,int类型
代码演示如下:
绘制与填充矩形 - cv::rectangle 参数说明:
参数img
表示矩形绘制对应的图像, 一般为Mat类型数据
参数rect
表示要绘制矩形的坐标与长宽, Rect类型
参数color
表示绘制使用的颜色,Scalar的向量与img的通道数目一直。
参数 thickness
默认为1,表示线段的粗细,值越大,画出来的线段越宽,int 类型。
参数 lineType
默认为8, 表示线段的每个像素点8连通方式提供渲染,此外值还可以是LINE_4或者LINE_AA其中LINE_AA表示反锯齿方式渲染绘制线段。
参数 shift
默认为0,表示线段,int类型
演示代码如下:
绘制圆与填充圆 - cv::circle
参数img
表示矩形绘制对应的图像, Mat类型
参数center
表示绘制圆的中心点坐标Point类型
参数 radius
表示绘制圆的半径大小,int类型
参数color
表示绘制使用的颜色,Scalar的向量与img的通道数目一直。
参数 thickness
默认为1,表示线段的粗细,值越大,画出来的线段越宽,int 类型。
参数 lineType
默认为8, 表示线段的每个像素点8连通方式提供渲染,此外值还可以是LINE_4或者LINE_AA其中LINE_AA表示反锯齿方式渲染绘制线段。
参数 shift
默认为0,表示线段,int类型
代码演示如下:
绘制与填充椭圆 - cv::ellipse
参数img
表示矩形绘制对应的图像, Mat类型
参数box
表示绘制的椭圆各个参数,包括角度、中心位置、大小,数据类型为RotateRect
参数color
表示绘制使用的颜色,Scalar类型。
参数 thickness
默认为1,表示线段的粗细,值越大,画出来的线段越宽,int 类型。
代码演示如下:
绘制与填充任意闭合区域
通过定义好的点,绘制直线,形成闭合区域,可以实现绘制任意形状闭合区域,同时通过OpenCV中泛洪填充API可以实现对任意闭合区域的颜色填充。演示代码如下:
完整的代码演示效果如下:
其中用的泛洪填充算法,小编打算另外一篇给大家专门扒一下这个算法本身,以及OpenCV中的源代码实现解析。
关注【OpenCV学堂】
长按或者扫码下面二维码即可关注
+OpenCV学习群 376281510
进群暗号:OpenCV