【OpenCV教程】如何优雅地画出一个几何图形

@TOC


1.直线

1.1 API

CV_EXPORTS_W void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,int thickness = 1, int lineType = LINE_8, int shift = 0);
  • 参数如下

参数
含义

img(image)

绘制多边形的画布,数据类型Mat

pt1(point1)

端点1

pt2(point2)

端点2

color

绘制线条的颜色

thickness

绘制线条的粗细

lineType

绘制线条的连通类型

shift

坐标点小数点位数(not important)

1.2 连通类型

enum LineTypes {
    FILLED  = -1,
    LINE_4  = 4, //!< 4-connected line
    LINE_8  = 8, //!< 8-connected line
    LINE_AA = 16 //!< antialiased line
};
  • LINE_4与LINE_8差别不大,而LINE_AA的抗锯齿效果显著

2.正矩形

2.1API

  • 参数如下

参数
含义

img(image)

绘制多边形的画布,数据类型Mat

pt1(point1)

左上角端点

pt2(point2)

右下角端点

color

绘制线条的颜色

thickness

绘制线条的粗细。若取负值,则表示进行填充

lineType

绘制线条的连通类型

shift

坐标点小数点位数(not important)

  • 参数如下

参数
含义

img(image)

绘制多边形的画布,数据类型Mat

rec(rect)

一个矩形

color

绘制线条的颜色

thickness

绘制线条的粗细。若取负值,则表示进行填充

lineType

绘制线条的连通类型

shift

坐标点小数点位数(not important)

3.圆形

3.1 API

  • 参数如下

参数
含义

img(image)

绘制多边形的画布,数据类型Mat

center

圆心坐标

radius

半径

color

绘制线条的颜色

thickness

绘制线条的粗细。若取负值,则表示进行填充

lineType

绘制线条的连通类型

shift

坐标点小数点位数(not important)

4.椭圆

4.1 API

  • 参数如下

参数
含义

img(image)

绘制多边形的画布,数据类型Mat

center

圆心坐标

axes

(x方向上半轴长,y方向上半轴长)

angle

顺时针偏角

startAngle

以x方向上的正半轴为起点,偏移一定角度后的起点,从此起点开始画椭圆

endAngle

以x方向上的正半轴为起点,偏移一定角度后的终点,到此为止结束画椭圆

color

绘制线条的颜色

thickness

绘制线条的粗细。若取负值,则表示进行填充

lineType

绘制线条的连通类型

shift

坐标点小数点位数(not important)

4.2 效果

5 斜矩形

5.1 API(通过RotatedRect类和line函数实现)

下面是自定义的一个快捷画斜矩形的函数

6.多边形

6.1 API

绘制方式一

  • 参数如下

参数
含义

img(image)

绘制多边形的画布,数据类型Mat

pts(points)

多边形角点的坐标点集,数据类型vector<Point>或vector<vector<Point>>若为vector<Point2f>或vector<vector<Point2f>>会报错

isClosed

多边形是否闭合,如果isClosed为真,那么pts的最后一个点将和第一个点连起来,否则轮廓被认为是不封闭的。

color

绘制线条的颜色

thickness

绘制线条的粗细。若取负值,则表示进行填充

lineType

绘制线条的连通类型

shift

坐标点小数点位数(not important)

绘制方式二

  • 参数如下

参数
含义

img(image)

绘制多边形的画布,数据类型Mat

pts(points)

多个多边形的角点坐标点集的地址的数组。如果有3个四边形的角点坐标点集Point[3][4],那么pts={Point[0][0],Point[1][0],Point[2][0],}

npts(number points)

多个多边形的角点坐标点集的元素个数排列成的数组,用来指示需要用到pts[i]中的几个元素。如果有3个四边形的角点坐标点集Point[3][4],那么npts={4,4,4,}

ncontours

多边形的数量

isClosed

多边形是否闭合,如果isClosed为真,那么pts的最后一个点将和第一个点连起来,否则轮廓被认为是不封闭的。

color

绘制线条的颜色

thickness

绘制线条的粗细。若取负值,则表示进行填充

lineType

绘制线条的连通类型

shift

坐标点小数点位数(not important)

最后更新于

这有帮助吗?