OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
基础绘图

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

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

目标

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

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

OpenCV 理论

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

标量

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

代码

解释

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

我们创建了函数来绘制不同的几何形状。例如,要绘制原子,我们使用了`MyEllipse`和`MyFilledCircle`

要绘制车,我们使用了`MyLine`、`rectangle`和`MyPolygon`

让我们检查一下这些函数内部的内容。

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值中表示蓝色。
    • 椭圆的thickness为2。

MyFilledCircle

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

MyPolygon

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

矩形

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

结果

编译并运行你的程序应该会给你这样的结果。