标题中的所有函数基本上都涉及这么几个参数,大家需要注意一下:
line()函数:画一条线
import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#Draw a line with thinkness of 5 px
#(0,0)是起始坐标,
#(100,100)是终止坐标,
#(255,0,0)是颜色(蓝色),
#5是线的像素宽度,
cv2.line(img,(0,0),(100,100),(255,0,0),5)
#打开一个窗口展示
winname = 'example'
cv2.namedWindow(winname)
cv2.imshow(winname,img)
cv2.waitKey(0)
cv2.destroyAllWindows(winname)
rectangle()函数:
矩形的绘制:
import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#画一个矩形框
#第一个参数:图片的数据
#第二个参数:左上角的坐标
#第三个参数:右下角的坐标
#第四个参数:颜色(这里选用了超级可爱的粉色)
#第五个参数:线的宽度,这里表示了全填充-1!-1!-1!!!
cv2.rectangle(img,(100,100),(200,200),(255,192,203),-1)
circle()函数
圆的绘制:
import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#绘制一个圆
#第一个参数 图片的数据
#第二个参数 圆心
#第三个参数 半径
#第四个参数 颜色
#第五个参数 线宽或者填充
cv2.circle(img,(150,150),50,color=(0,255,0),thickness=5)
ellipse()函数
椭圆的绘制:
import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#椭圆的绘制
#第一个参数 图片的数据
#第二个参数 椭圆的中心
#第三个参数 椭圆的长短轴的长度
#第四个参数 angle 偏转的角度
#第五个参数 start_angle 圆弧起始角的角度
#第六个参数 end_angle 圆弧终结角的角度
#第七个参数 color 线条的颜色
#第八个参数 thickness 线条的粗细程度
#第九个参数 line_type 线条的类型
cv2.ellipse(img,(300,300),(100,50),0,10,350,(0,255,255),-1)
polylines()函数
多边形的绘制:
import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#多线条的绘制,封闭的话也可以叫做多边形
#array reshape之后是4*1*2的三维数组没搞明白为啥这样写
#先确定连接的点 必须是int32
#做矩阵变换 reshape,估计是1*2的前二维表示一个点吧,一维没办法表示一个点
#最后绘制
#绘制[pts]是为了遍历,不加不行 isClosed表示是否封闭多边形true就是封闭
pts = np.array([[10,5],[20,30],[70,20],[50,10]],np.int32)
pts= pts.reshape((-1,1,2))
cv2.polylines(img,[pts],isClosed=True,color=(255,255,255),thickness=1)
完整代码:
import cv2
import numpy as np
#create a black image
#图片是512*512大小三通道的黑色图片
img = np.zeros((512,512,3),np.uint8)
#Draw a line with thinkness of 5 px
#(0,0)是起始坐标,(100,100)是终止坐标,(255,0,0)是颜色,5是线的像素宽度
cv2.line(img,(0,0),(100,100),(255,0,0),5)
#画一个矩形框
cv2.rectangle(img,(100,100),(200,200),(255,192,203),-1)
cv2.circle(img,(150,150),50,thickness=5,color=(0,255,0))
cv2.ellipse(img,(300,300),(100,50),0,10,350,(0,255,255),-1)
#多线条的绘制
#先确定连接的点
#在矩阵变换
#最后绘制:为什么要加中括号应该是方便矩阵遍历
pts = np.array([[10,5],[20,30],[70,20],[50,10]],np.int32)
pts= pts.reshape((-1,1,2))
print([pts])
cv2.polylines(img,[pts],isClosed=True,color=(255,255,255),thickness=1)
cv2.putText(img,'XSWL',(10,500),cv2.FONT_HERSHEY_SIMPLEX,4,(249,204,226),2)
winname = 'example'
cv2.namedWindow(winname)
cv2.imshow(winname,img)
cv2.waitKey(0)
cv2.destroyAllWindows(winname)
代码运行效果: