目标
- 学习使用OpenCV绘制不同的几何形状
- 您将学习以下功能:cv2.line(), cv2.circle() , cv2.rectangle(), cv2.ellipse(), cv2.putText()等等。
Code
在上述所有函数中,您将看到一些常见的参数,如下所示:
- IMG:要绘制形状的图像
- 颜色:形状的颜色。对于BGR,以元组的形式传递它,如:(255,0,0)蓝色的。对于灰度,只需传递标量值即可。
- thickness:线或圆的厚度等。如果-1是像圆圈那样的封闭图形,它会填充形状。 默认thickness = 1
- 线型:线的类型,不论是8连接,防混线等.默认情况下,它是8连接的。 cv2.LINE_AA给出反别名线,这看起来很适合曲线。
画线
要画一条线,需要传递直线的起始坐标和结束坐标。我们将创建一个黑色图像,并在上面画一条从左上角到右下角的蓝色线。
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
cv2.line(img,(0,0),(511,511),(255,0,0),5)
绘图矩形
要绘制矩形,需要矩形的左上角和右下角.这一次,我们将画一个绿色的矩形在右上角的图像.
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
绘图圈
要画一个圆,你需要它的中心坐标和半径。我们将在上面画的矩形内画一个圆圈。
cv2.circle(img,(447,63), 63, (0,0,255), -1)
绘图椭圆
要绘制椭圆,我们需要传递几个参数。一个参数是中心位置(x,y)。下一个参数是轴长(长轴长、短轴长)。夹角椭圆在逆时针方向旋转的角度。起始角和端角表示从主轴顺时针方向测量的椭圆弧的开始和结束,即给出的值0和360表示整个椭圆。下面的例子在图像的中心画一个半椭圆。
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
绘制多边形
要绘制多边形,首先需要顶点的坐标。把这些点变成一个形状数组ROWSx1x2其中行是顶点的数目,并且应该是类型的。INT 32。在这里,我们画了一个小多边形的四个顶点黄色。
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,255))
注:如果第三个论点是False,您将得到一个多线连接所有的点,而不是一个封闭的形状。
cv2.polylines() 可用于绘制多条线。只需创建要绘制的所有线条的列表,并将其传递给函数,所有的线都将单独划出。
向图像添加文本:
要将文本放入图像中,您需要指定以下内容。
- 要写入的文本数据
- 要放置它的位置坐标(即数据开始的左下角)。
- 字体类型(检查)cv2.putText()支持字体的文档)
- 字体刻度(指定字体大小)
- 有规律的东西,如颜色,厚度,线条类型等。为了更好地看,lineType = cv2.LINE_AA是推荐的。
我们会写OpenCV在我们白色的图像上。
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)
结果
所以是时候看看我们画的最后结果了。正如您在前几篇文章中所研究的,显示图像来查看它。