别的不说,首先创建灰度都为0 的彩图

importnumpy as np
importcv2
# Create a black image
img = np.zeros((512,512,3), np.uint8)

np.zeros()有两个参数,一个是创建的图片矩阵大小,另一个是数据类型

所谓大小,512,512是指图片占像素为512x512,3则是指BGR三种颜色

uint8就是每种颜色都是0到255

画直线cv2.line()

img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

cv2.line有五个参数,图片名称、起点坐标、终点坐标、颜色、线宽

图片名称就是你要在哪张图片里画直线,这里是刚才创建的img

起点坐标和终点坐标都是二维点,(0,0)和(511,511)

颜色对应BGR,(255,0,0)是纯蓝色

线宽是线的粗细,这里选为5,不写的话默认是1

画矩形cv2.rectangle()

img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

cv2.rectangle五个参数,图片名称、两个对角点坐标、颜色数组、线宽

与直线只有一点不同就是输入的两坐标点不是起点和终点而是对角线的起点和终点。机械的孩子应该懂两点确定矩形

画圆cv2.circle()

img = cv2.circle(img,(447,63),63, (0,0,255), -1)

cv2.circle五个参数,图片名称、圆心坐标、半径、颜色数组、线宽

线宽为-1对封闭图形来说是内部填满,所以画出来的就是红色的圆面而不是圆形。

上面一点对所有封闭图形都适用,包括矩形、圆、椭圆、多边形等

画椭圆cv2.ellipse

img = cv2.ellipse(img,(256,256),(100,50),0,0,180,(0,255,0),-1)

稍稍复杂,有八个参数。图像、中心坐标、长轴短轴、旋转角度、显示的部分、颜色数组、线宽

中心坐标(256,256)

长轴短轴是(100,50)指长轴长100,短轴长50

旋转角度是指椭圆逆时针旋转多少度,这里是0

显示的部分是用极坐标中的角度来刻画的一段区域,从长轴顺时针(顺!)开始数,第一个是起始角度,设为0;第二个是终点角度,设为180.这两个参数的作用是只显示椭圆在长轴开始0到180度之内的部分

线宽仍是-1,虽然这里显示的椭圆是0,180即下半椭圆,但是它会用Green填满下半椭圆

画多边形cv2.polylines()

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255),3)

polylines有五个参数,图像、顶点集、是否闭合、颜色数组、线宽

pts是用numpy中的array函数建立的向量集,即点集,最后的np.int32是说点的坐标数据类型是int32

reshape是什么意思不太懂,百度了一会据说是跟通道有关,有点深了以后再研究

在polylines中的True和False代表多边形是否闭合,True是闭合,False是有一条边空出来,不闭合

写字符cv2.putText()

font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font,4,(255,255,255),2,cv2.LINE_AA)

八个参数,图片、字符串、坐标、字体、字号、颜色数组、线宽、线条种类

虽然我也不知道这LINE_AA是啥,百度说是锯齿线

那么就把所有代码连起来,召唤神龙

cv2.imshow('demo',img)
cv2.waitKey(0)


python zero python zeros((2,2,2))_ci