OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
基本绘图

下一个教程: 使用 OpenCV 生成随机数和文本

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

目标

在本教程中,你将学习如何:

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

OpenCV 理论

Point (点)

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

Scalar (标量)

  • 表示一个四元向量。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
    • 椭圆在 0360 度之间延伸一个弧
    • 图形的颜色将是 ( 255, 0, 0 ),在 BGR 值中表示蓝色。
    • 椭圆的 粗细 为 2。

MyFilledCircle

  • 与 ellipse 函数类似,我们可以看出 *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) 指定,因此矩形将被填充。

结果

编译并运行您的程序,应该会得到类似下面的结果