在OpenCV中绘制函数
目标
- 学习使用OpenCV绘制不同的几何形状
- 你将学习这些函数:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText()等
码
在所有上述功能中,您将看到如下所示的一些常见参数:
- img:想要绘制形状的图像
- 颜色:形状的颜色。对于BGR,将它作为元组传递,例如:
(255,0,0)
for blue。对于灰度,只需传递标量值即可。- 厚度:线或圆的厚度等。如果像圆圈这样的闭合数字传递-1,它将填充形状。默认厚度= 1
- lineType:行的类型,无论是8连接,反走样线等。默认情况下,它是8连接。
cv2.LINE_AA
给出了曲线非常好的消除锯齿线。
绘制线
要绘制线条,您需要传递线条的起始和结束坐标。我们将创建一个黑色图像,并从左上角到右下角画一条蓝线。
import numpy as np import cv2 #创建一个黑色图像 img = np 。零((512 ,512 ,3 ), NP 。UINT8 ) #画一条厚度为 5px 的对角蓝线img = cv2 。线(IMG ,(0 ,0 ),(511 ,511 ),(255 ,0 ,0 ),5 )
绘制矩形
要绘制矩形,需要矩形的左上角和右下角。这次我们将在图像的右上角画一个绿色的矩形。
img = cv2 。矩形(IMG ,(384 ,0 ),(510 ,128 ),(0 ,255 ,0 ),3 )
绘图圈
要绘制一个圆,需要它的中心坐标和半径。我们将在上面绘制的矩形内绘制一个圆。
img = cv2 。圈(IMG ,(447 ,63 ), 63 , (0 ,0 ,255 ), - 1 )
绘制椭圆
要绘制椭圆,我们需要传递几个参数。一个参数是中心位置(x,y)。下一个参数是轴长度(长轴长度,短轴长度)。angle
是椭圆在逆时针方向上的旋转角度。startAngle
并endAngle
表示从长轴顺时针方向测量的椭圆弧的起点和终点。即给出值0和360给出完整的椭圆。有关更多详细信息,请查看cv2.ellipse()的文档。下面的示例在图像的中心绘制一个半椭圆。
img = cv2 。椭圆(IMG ,(256 ,256 ),(100 ,50 ),0 ,0 ,180 ,255 ,- 1 )
绘制多边形
要绘制多边形,首先需要顶点的坐标。将这些点转换为ROWSx1x2
ROWS是顶点数的形状数组,它应该是类型的int32
。在这里我们绘制一个带有四个黄色顶点的小多边形。
pts = np 。阵列([[ 10 ,5 ],[ 20 ,30 ],[ 70 ,20 ],[ 50 ,10 ]], NP 。INT32 ) PTS = PTS 。重塑((- 1 ,1 ,2 )) IMG = CV2 。折线(IMG ,[ PTS ],真,(0 ,255 ,255))
注意
如果第三个参数是False
,你会得到一个多段线加入所有的点,而不是一个封闭的形状。
注意
cv2.polylines()
可以用来绘制多行。只需创建一个您想要绘制的所有线条的列表并将其传递给该函数。所有线路将被单独绘制。绘制一组线要比调用cv2.line()
每一条线更好,更快。
添加文字到图像:
- 要将图片放入图片中,您需要指定以下内容。
-
- 要写入的文本数据
- 要放置的位置坐标(即数据开始处的左下角)。
- 字体类型(查看支持的字体的cv2.putText()文档)
- 字体比例(指定字体的大小)
-
定期的东西,如颜色,厚度,线型等为了更好看,建议。
lineType = cv2.LINE_AA
我们将以白色在我们的图像上编写OpenCV。
font = cv2 。FONT_HERSHEY_SIMPLEX cv2 。putText (IMG ,'的OpenCV' ,(10 ,500 ), 字体, 4 ,(255 ,255 ,255 ),2 ,CV2 。LINE_AA )
结果
所以是时候看看我们绘图的最终结果了。正如您在之前的文章中所学,显示图像以查看它。