OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
基本绘图

下一教程: OpenCV 随机生成器和文本

原始作者Ana Huamán
兼容性OpenCV >= 3.0

目标

在本教程中,您将学习如何

  • 使用 OpenCV 函数 line() 绘制一条直线
  • 使用 OpenCV 函数 ellipse() 绘制一个椭圆
  • 使用 OpenCV 函数 rectangle() 绘制一个矩形
  • 使用 OpenCV 函数 circle() 绘制一个圆形
  • 使用 OpenCV 函数 fillPoly() 绘制一个填充多边形

OpenCV 理论

Point(点)

它表示一个 2D 点,由其图像坐标 \(x\) 和 \(y\) 指定。我们可以将其定义为

Scalar(标量)

  • 表示一个 4 元素向量。Scalar 类型在 OpenCV 中广泛用于传递像素值。
  • 在本教程中,我们将大量使用它来表示 BGR 颜色值(3 个参数)。如果不需要使用最后一个参数,则无需定义它。
  • 我们来看一个例子,如果要求提供颜色参数,我们给出 我们将定义一个 BGR 颜色,例如:蓝色 = a绿色 = b红色 = c

代码

解释

由于我们计划绘制两个示例(一个原子和一个城堡棋子),因此我们必须创建两个图像和两个窗口来显示它们。

我们创建了函数来绘制不同的几何形状。例如,为了绘制原子,我们使用了 MyEllipseMyFilledCircle

为了绘制城堡棋子,我们使用了 MyLinerectangleMyPolygon

我们来看看这些函数内部有什么

MyLine

  • 正如我们所见,MyLine 仅仅调用了 line() 函数,其作用如下:
    • 从点 start 到点 end 绘制一条直线
    • 线条显示在图像 img
    • 线条颜色由 ( 0, 0, 0 ) 定义,这是对应于黑色的 RGB 值
    • 线条粗细设置为 thickness(本例中为 2)
    • 线条是 8-连接的(lineType = 8)

MyEllipse

  • 从上面的代码中,我们可以看出函数 ellipse() 绘制了一个椭圆,其特点是
    • 椭圆显示在图像 img
    • 椭圆中心位于点 (w/2, w/2),并包含在大小为 (w/4, w/16) 的框中
    • 椭圆旋转了 angle
    • 椭圆的弧度从 0 延伸到 360
    • 图形颜色为 ( 255, 0, 0 ),这意味着 BGR 值为蓝色。
    • 椭圆的粗细为 2。

MyFilledCircle

  • 与椭圆函数类似,我们可以看到 circle 接收以下参数:
    • 将显示圆形的图像 (img)
    • 圆心,表示为点 center
    • 圆的半径:w/32
    • 圆的颜色:( 0, 0, 255 ),在 BGR 中表示 红色
    • 由于 thickness = -1,因此圆形将被填充。

MyPolygon

  • 要绘制填充多边形,我们使用函数 fillPoly()。我们注意到:
    • 多边形将绘制在 img
    • 多边形的顶点是 ppt 中的点集
    • 多边形颜色由 ( 255, 255, 255 ) 定义,这是白色的 BGR 值

rectangle

  • 最后是 cv::rectangle 函数(我们没有为它创建特殊的函数)。我们注意到:
    • 矩形将绘制在 rook_image
    • 矩形的两个相对顶点由 ( 0, 7*w/8 )( w, w ) 定义
    • 矩形颜色由 ( 0, 255, 255 ) 给出,这是黄色的 BGR 值
    • 由于粗细值由 FILLED (-1) 给出,矩形将被填充。

结果

编译并运行您的程序应得到如下结果: