1.绘画基础
OpenCV提供了绘制多种图形的函数。这些绘图函数有一些共用的参数,主要用于设置源图像,颜色,线条属性等。
下面对这些共有参数做简单的介绍:
- img 在其上面绘制图形的载体图像(绘图的容器载体,也称为画布、画板)
- color 绘制形状的颜色,通常使用BGR模型表示颜色例如,(0,255,0)表示绿色,对于灰度图像,只能传入灰度值。需要注意,颜色通道的顺序是BGR,而不是RGB
- thicksness 线条的粗细,默认值是 1 ,如果设置为-1,表示填充图形(即绘制的图形是实心的)
- lineType 线条的类型
- shift 数据精度。该参数用来控制数值(例如圆心坐标等)的精度,一般情况下不需要设置。
2.常见绘制函数
cv2.line()用来绘制直线(线段)。该函数的语法格式为:
img = cv2.line(img,pt1,pt2,color[,thickness[,lineType]])
参数img,color,thickness,lineType的含义如前面的说明所示
pt1 表示线段的第一个点(起点)
pt2 表示线段的第二个点(终点)
示例:
import numpy as np
import cv2
n = 300
img = np.zeros((n+1,n+1,3),np.uint8)
img = cv2.line(img,(0,0),(n,n),(255,0,0),3)
img = cv2.line(img,(0,100),(n,100),(0,255,0),1)
img = cv2.line(img,(100,0),(100,n),(0,0,255),6)
winname = 'Demo19.1'
cv2.namedWindow(winname)
cv2.imshow(winname,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如下:
cv2.rectangle()用来绘制矩形。该函数的语法格式为:
img = cv2.rectangle(img,pt1,pt2,color[,thickness[,lineType]])
参数img,color,thickness,lineType的含义如前面的说明所示
pt1为矩形顶点
pt2为矩形中与pt1对角的顶点
示例:
import numpy as np
import cv2
n = 300
img = np.ones((n,n,3),np.uint8)*255
img = cv2.rectangle(img,(50,50),(n-100,n-50),(0,0,255),-1)
winname = 'Demo19.1'
cv2.imshow(winname,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如下:
cv2.circle()用来绘制圆形。该函数的语法格式为:
img = cv2.circle(img,center,radius,color[,thickness[,lineType]])
参数img,color,thickness,lineType的含义如前面的说明所示
center 为圆心
示例绘制一个同心圆:
import numpy as np
import cv2
d = 400
img = np.ones((d,d,3),dtype='uint8')*255
(centerX, centerY) =(round(img.shape[1]/2),round(img.shape[0]/2))
# 将图像的中心作为圆心,实际值为d/2
red = (0,0,255) #设置白色变量
for r in range(5,round(d/2),12):
cv2.circle(img,(centerX,centerY),r,red,3)
# circle(载体图像,圆心,半径,颜色)
cv2.imshow('circle',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码运行结果如下:
cv2.ellipse()用来绘制椭圆。该函数的语法格式为:
img=cv2.ellipse(img,center,axes,angle,starAngle,endAngle,color[,lineTpye]])
参数img,color,thickness,lineType的含义如前面的说明所示
center 为椭圆的圆心坐标
axes 为轴的长度
angle 为偏转的角度
starAngle 为圆弧起始角的角度
endAngle 为圆弧终结角的角度