基本函数
cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
#画线段
#例:cv2.line(img, (10,10), (510,510), (0, 255,0),5)
#img:在img上绘图 pt1:起点 pt2:终点
#color:线的颜色
#thickness:线的粗细程度,如果给一个闭合图形设置为 -1,那么这个图形就会被填充
#其它参数默认即可。
cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None)
#画圆
#例:cv2.circle(img, (50,50), 10, (0,0,255),-1)
#center:圆心;例如:(0,0) radius:半径;例如:20
cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
#画矩形
#例:cv2.rectangle(img,(10,10),(30,40),(134,2,34),1)
cv2.ellipse(img,center,axes,angle,startAngle,endAngle,color,thickness=None,lineType=None,shift=None)
#画椭圆
#例:cv2.ellipse(img,(256,256),(100,50),0,0,180,(20,213,79),-1) #线型-1表示填充
#center:中心点位置,axes:长轴和短轴的长度,angle:椭圆沿逆时针选择角度,
#startAngle:椭圆沿顺时针方向起始角度,endAngle:椭圆沿顺时针方向结束角度
cv2.polylines(img,pts,isClosed,color,thickness=None,lineType=None,shift=None))
#画多边形
#pts=np.array([[10,3],[48,19],[60,3],[98,19]],np.int32) #数据类型必须是int32
# pts=pts.reshape((-1,1,2))
#这里 reshape 的第一个参数为-1, 表明这一维的长度是根据后面的维度的计算出来的。
#如果第三个参数是 False,我们得到的多边形是不闭合的(首尾不相连)。
#cv2.polylines(img,[pts],True,(0,0,255),1) # 图像,点集,是否闭合,颜色,线条粗细
#cv2.polylines():可以用来画很多条线,只要把要画的线放在一个列表中,将列表传给函数就可以了
cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)
#加字
#cv2.putText(img, ‘XXX’,(50,300),font,4,(255,0,255),2,cv2.LINE_A4)
# text:文字内容,org:坐标 , fontFace:字体, fontScale:大小,
# color:颜色, thickness:字体厚度, lineType:线类型
img = np.zeros(shape, dtype=None, order=’C’)
#构造全0矩阵,,创建窗口画布
例:img=np.zeros((512,512,3), np.uint8)
shape:矩阵大小,窗口画布大小
dtype:数据类型;例如:”np.uint8”
order:可选,数据排列顺序,默认按列排的
np.random.randint(low, high=None, size=None)
np.random.randint:产生[low,high)中的随机整数
low:区间下界;例如:0
high:区间上界;例如:256
size:个数;例如:size = (2,),产生2个随机整数
画线段、矩形、圆、椭圆、多边形、文字
import numpy as np
import cv2
img=np.zeros((512,512,3), np.uint8)#创建一个黑色的图片
cv2.line(img,(0,0),(511,511),(0,0,255),1)
#线
# cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
#矩形
# cv2.circle(img,(447,63), 63, (0,0,255), -1)
#圆
# cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
#椭圆
# 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,0,255),1)
#多边形
#font=cv2.FONT_HERSHEY_SIMPLEX
#cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)
#文字
#for i in range(0,25):
#radius = np.random.randint(5,high = 200) #生成1个[5,200)的随机半径
#color = np.random.randint(0,high = 256,size = (3,)).tolist() #生成3个[0,256)的随机颜色
#pt = np.random.randint(0,high = 300,size = (2,)) #生成2个[0,300)的随机圆心
#cv2.circle(img,tuple(pt),radius,color,-1)#画圆
#生成随机圆
cv2.imshow('opencv',img)
cv2.waitKey(0)
#if cv2.waitKey(0)&0XFF ==ord('q'): break #设置q键退出窗口
cv2.destroyAllWindows()