前言
在上一节我们通过使用NumPy的数组分割成功的在我们的图像上画了一个绿色的方块,但是如果我们想画一个单一的线条或者圆圈该怎么办呢?NumPy没有提供相关的功能,但是OpenCV提供了相关的函数,在本节就将为大家介绍三个基本的OpenCV画图方法:
cv2.line() #1
cv2.rectangle() #2
cv2.circle() #3
1 画直线和矩形
在开始我们用OpenCV画我们的杰作之前,我们需要定义一个画布
import numpy as np #1
import cv2 #2
canvas = np.zeros((300, 300, 3), dtype="uint8") #3
#1-2:
关于所需包的导入
#3:
我们使用np.zeros()方法构造了一个300*300的NumPy数组,同时分配了三个颜色空间,分别表示Red,Green,Blue,正如zeros名字所描述的一样,这个方法用0填充了这个数组的每一个元素。在np.zeros()的第二个变量是数据类型:dtype。由于我们需要用RGB格式来表示我们的图像,它的取值范围是[0,255],所以我们用“uint8”就显得至关重要了,如果不声明的话np.zeros()默认的变量类型是float64.
1.1 画直线
green = (0, 255, 0) #4
cv2.line(canvas, (0, 0), (300, 300), green) #5
cv2.imshow("Canvas", canvas) #6
cv2.waitKey(0) #7
red = (0, 0, 255) #8
cv2.line(canvas, (300, 0), (0, 300), red, 3) #9
cv2.imshow("Canvas", canvas) #10
cv2.waitKey(0) #11
#4:
我们定义了一个元组来表示绿色
#5-7:
我们在canvas上画了一条绿线从坐标(0,0)到(300,300),将结果显示出来,并等待按下任意按键
#8:
我们定义了一个元组来表示红色,再次强调OpenCV是BGR模式而不是RGB模式
#9-11:
我们在canvas上画了一条红线从坐标(300,0)到(0,300),并且该线的线型为3个像素,这也是最后一个参数的含义,然后将结果显示出来,并等待按下任意按键
1.2 画矩形
cv2.rectangle(canvas, (10, 10), (60, 60), green) #12
cv2.imshow("Canvas", canvas) #13
cv2.waitKey(0)