目标

  • 学习使用OpenCV绘制不同的几何形状
  • 你将学习这些函数:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText()

Code

在上面的所有函数中,您将看到如下所示的一些常见参数:

  • img:要绘制形状的图像
  • color:形状的颜色。对于BGR,将其作为元组传递,例如:(255,0,0)for blue。对于灰度,只需传递标量值即可。
  • thickness:线条或圆的粗细等。如果像圆圈这样的闭合数字传递-1,则它将填充形状。默认厚度= 1
  • lineType:行的类型,8连接,消除锯齿线等。默认为8连接。 cv2.LINE_AA给出反锯齿线,这对于曲线看起来很棒。

1、绘图线

要绘制线条,您需要传递线条的起始和结束坐标。我们将创建一个黑色的图像,并从左上角到右下角画一条蓝线。

import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)

# Draw a diagonal blue line with thickness of 5 px
img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

2、绘制矩形

要绘制矩形,需要矩形的左上角和右下角。这一次,我们将在图像的右上角画一个绿色的矩形。

img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

3、绘制椭圆

要绘制椭圆,我们需要传递几个参数。一个参数是中心位置(x,y)。下一个参数是轴长度(长轴长度,短轴长度)。angle是椭圆逆时针旋转的角度。startAngleendAngle表示从长轴顺时针方向测量的椭圆弧的起点和终点。即给出值0和360给出完整的椭圆。有关更多详细信息,请查看cv2.ellipse()的文档。下面的示例在图像的中心绘制一个半椭圆。

img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

4、绘制多边形

要绘制多边形,首先需要顶点的坐标。将这些点转换成ROWSx1x2ROWS是顶点数的形状数组,它应该是类型的int32。在这里,我们绘制了一个黄色四个顶点的小多边形。

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255))

如果第三个参数是False,你会得到一个多段线,所有的点,而不是一个封闭的形状。

cv2.polylines()可以用来绘制多行。只要创建一个你想绘制的所有线的列表,并将其传递给函数。所有线路将被单独绘制。绘制一组线要比调用cv2.line()每一行更好,更快。

5.在图片上添加文字

需要设置,文字内容,绘制的位置,字体类型、大小、颜色、粗细、类型等,这里推荐linetype=cv2.LINE_AA

font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

结果

所以是时候看看我们绘图的最终结果了。正如您在之前的文章中所学,显示图像以查看它。 \drawing.jpg