在 OpenCV 中绘制函数
优质
小牛编辑
132浏览
2023-12-01
目标
- 学习使用
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
是椭圆逆时针旋转的角度。startAngle
和endAngle
表示从长轴顺时针方向测量的椭圆弧的起点和终点。即给出值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)
结果
所以是时候看看我们绘图的最终结果了。正如您在之前的文章中所学,显示图像以查看它。