opencv绘图基础(2):cv2.line,cv2.rectangle,cv2.circle,cv2.ellipse,cv2.polylines,cv2.putText

tech2023-12-24  79

目录

 

1.绘制线段:cv2.line(img,pt1,pt2,color,thickness=None,lineType=None,shift=None)

2.绘制矩形:cv2.rectangle(img,pt1,pt2,color,thickness=None,lineType=None,shift=None)

3.圆绘制:cv2.circle(img,center,radius,color,thickness=None,lineType=None)

4.椭圆绘制:cv2.ellipse(img,center,axes,angle,startAngle,endAngle,color,thickness=None,lineType=None,shift=None)

5.多边形绘制:cv2.polylines(img,pts,isClosed,color,thickness=None,lineType=None,shift=None)

6.添加文字:cv2.putText(img,text,org,fontFace,fontScale,color,thickness=None,lineType=None,bottomLeftOrigin=None)

7.综合代码


1.绘制线段:cv2.line(img,pt1,pt2,color,thickness=None,lineType=None,shift=None)

第一个参数img为待绘制的图像,pt1为线段的起点,pt2为线段的终点,color为形状的颜色,用元组如(255,0,0)表示

thickness为线条的粗细,-1为填充模式,默认值为1;linetype是线条的类型,8型或cv2.LINE_AA,默认值为8型

# 绘制一条线宽为5的线段 cv2.line(img,(0,0),(200,500),(0,0,255),5)

2.绘制矩形:cv2.rectangle(img,pt1,pt2,color,thickness=None,lineType=None,shift=None)

pt1和pt2分别表示左上角和右下角的坐标点,其他和上面相同

# 画一个绿色边框的矩形,参数2:左上角坐标,参数3:右下角坐标 cv2.rectangle(img,(384,0),(510,128),(0,255,255),1)

3.圆绘制:cv2.circle(img,center,radius,color,thickness=None,lineType=None)

center表示圆心,radius表示半径

# 画一个填充红色的圆,参数2:圆心坐标,参数3:半径 cv2.circle(img,(447,63), 63, (0,0,255), -1)

4.椭圆绘制:cv2.ellipse(img,center,axes,angle,startAngle,endAngle,color,thickness=None,lineType=None,shift=None)

axes表示的是x/y轴的长度(x,y),angle表示椭圆的旋转角度,startAngle是椭圆的起始角度,endAngle是椭圆的结束角度

# 在图中心画一个填充的半圆 cv2.ellipse(img, (256, 256), (100, 50), 0, 30, 180, (255, 0, 0), -1)

5.多边形绘制:cv2.polylines(img,pts,isClosed,color,thickness=None,lineType=None,shift=None)

pts是一个点对数组,维度为顶点个数n*2;isClosed是布尔型,True表示的是线段闭合,False表示的是线段不闭合;

# 定义四个顶点坐标 pts = np.array([[10, 5], [50, 10], [70, 20], [20, 30]]) #绘制多边形 cv2.polylines(img, [pts], False, (0, 255, 255))

上图分别为isClose=False和isClosed=True

6.添加文字:cv2.putText(img,text,org,fontFace,fontScale,color,thickness=None,lineType=None,bottomLeftOrigin=None)

text为要添加的文本,org为文字的起始坐标(左下角为起点),fontFace为字体类型,fontScale为文字大小的缩放比例

#添加文字 font=cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'OpenCV',(50,200), font, 3,(0,255,255),5)

7.综合代码

import numpy as np import cv2 # 创建一张黑色的背景图 img=np.zeros((512,512,3), np.uint8) # 绘制一条线宽为5的线段 cv2.line(img,(0,0),(511,511),(255,0,0),1) # 画一个绿色边框的矩形,参数2:左上角坐标,参数3:右下角坐标 cv2.rectangle(img,(384,0),(510,128),(0,255,0),3) # 画一个填充红色的圆,参数2:圆心坐标,参数3:半径 cv2.circle(img,(447,63), 63, (0,0,255), -1) # 在图中心画一个填充的半圆 cv2.ellipse(img, (256, 256), (100, 50), 0, 0, 180, (255, 0, 0), -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) # 这里 reshape 的第一个参数为-1, 表明这一维的长度是根据后面的维度的计算出来的。 #添加文字 font=cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2) winname = 'example' cv2.namedWindow(winname) cv2.imshow(winname, img) cv2.waitKey(0) cv2.destroyWindow(winname)

效果图

最新回复(0)