python-opencv-绘图函数
点和圆 :
circle(img,center,radius,color,thickness=None,lineType=None,shift=None)。各参数意义及作用如下。
img:待画圆所在的图像。
center:待画圆的圆心坐标。
radius:待画圆的半径。
color:待画圆的边框颜色,颜色格式为bgr格式。就是通道值
thickness:待画圆的边框宽度,正数表示边框宽度,负数表示填充圆形。
lineType:圆边框线型,可为 0,4,8
shift:圆心坐标和半径的小数点位数
画点实际上就是画半径很小的实心圆
import cv2 img = cv2.imread("500x400.jpg") img1=cv2.circle(img,(60,60),30,(0,0,255),-1) #画一个红色实心圆 img1=cv2.circle(img1,(200,200),50,(255,0,0),3) #画一个蓝边框的圆 cv2.imwrite("linsi.jpg",img1) cv2.waitKey(0)
注意:在img和img1上同时画
效果图:
画线 :
import cv2 img = cv2.imread("500x400.jpg") img1=cv2.line(img,(10,10),(200,200),(0,255,0),3) #直线 #参数2 起点坐标;参数3 终点坐标;参数4 颜色;参数5 线条宽度 cv2.imwrite("linsi.jpg",img1) cv2.waitKey(0)
画矩形:
import cv2 img = cv2.imread("500x400.jpg") img1=cv2.rectangle(img,(10,10),(30,40),(255,0,0),2) #画矩形 #参数2 左上角坐标;参数3 右下角坐标;参数4 颜色;参数5 线条宽度 cv2.imwrite("linsi.jpg",img1) cv2.waitKey(0)
椭圆:
import cv2 img = cv2.imread("500x400.jpg") img1=cv2.ellipse(img,(256,256),(100,50),0,30,180,(255,0,0),-1) # 画椭圆 #参数2 椭圆中心 #第三个参数 椭圆的长短轴的长度 #第四个参数 整个椭圆的偏转角度(顺时针) #第五个参数 圆弧起始角的角度 #第六个参数 圆弧终结角的角度 # 圆弧角度->x轴方向为0,逆时针方向为正 #第七个参数 color 线条的颜色 #第八个参数 线条的粗细程度,如果是负数表示填充 #第九个参数 line_type 线条的类型 ??? cv2.imwrite("linsi.jpg",img1) cv2.waitKey(0)
多边形:
画多边形——需要指定每个顶点的坐标
import cv2 import numpy as np img = cv2.imread("500x400.jpg") points = np.array([[150,50],[140,140],[200,170],[250,250],[150,50]],np.int32) #多边形各顶点坐标 #数据类型必须是np.int32 points = points.reshape(-1,1,2) img1=cv2.polylines(img,[points],True,(0,0,255),3) #画多边形 #参数2 各顶点 #参数3 True表示封闭,False表示不封闭 #参数4 颜色 #参数5 线条粗细 cv2.imwrite("linsi.jpg",img1) cv2.waitKey(0)
添加文字 :
import cv2 import numpy as np img = cv2.imread("500x400.jpg") font=cv2.FONT_HERSHEY_SIMPLEX font=cv2.FONT_HERSHEY_DUPLEX img1=cv2.putText(img,'wo is liming',(80,90), font, 2,(255,255,255),3) #画文字 #参数3 位置 #参数5 字体大小 #参数7 线型 cv2.imwrite("linsi.jpg",img1) cv2.waitKey(0)