1.绘图函数所需要的参数
• img:你想要绘制图形的那幅图像。
• color:形状的颜色。以 RGB 为例,需要传入一个元组,例如:(255,0,0)代表蓝色。对于灰度图只需要传入灰度值。
• thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形就会被填充。默认值是 1.
• linetype:线条的类型,8 连接,抗锯齿等。默认情况是 8 连接。cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。
生成一个空灰度图像
img=np.zeros((512,512,3),np.uint8)
此代码就相当于制造一张白纸,接下来的绘图都将在这张白纸上进行
2.画直线
参数含义:pt1:起点坐标,pt2:终点坐标
函数:cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
cv2.line(img,(0,0),(511,511),(255,0,0),1)
注意:cv2.polylines() 可以被用来画很多条线。只需要把想要画的线放在一个列表中,将这个列表传给函数就可以了。每条线都会被独立绘制。这会比用cv2.line() 一条一条的绘制要快一些。
3.画矩形
参数含义:pt1:左上角坐标,pt2:右下角坐标
函数:cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
cv2.rectangle(img,(0,0),(300,300),(0,255,0),3)
4.画圆
参数含义:center:中心点坐标, radius:半径
函数:cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None)
cv2.circle(img,(300,300),150,(0,0,255),-1)
5.画椭圆
参数含义:center:中心点坐标,axes:长轴短轴长度,angle:椭圆旋转角度,start angle:起始角度,endAngle:结束角度
函数:cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None, shift=None)
cv2.ellipse(img,(256,256),(100,50),0,0,360,255,-1)
6.画多边形
参数含义:pts:各个点的坐标,isClosed:是否闭合(为True则表示闭合)
函数:cv2.polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)
#np.array:创建一个数组
pts=np.array([[10,5],[20,30],[70,20],[50,10]])
#转换成任意行,一列的矩阵(-1表示任意行)。
pts=pts.reshape((-1,1,2))
#如果第三个参数是 False,我们得到的多边形是不闭合的(首尾不相连)
cv2.polylines(img,[pts],True,(0,0,255),1) # 图像,点集,是否闭合,颜色,线条粗细
7.在图片上添加文字
参数含义:text:要添加的文字,org:位置,fontFace:字体,fontScale:大小,color:颜色
函数:putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)
#设置字体
font=cv2.FONT_HERSHEY_SIMPLEX
#参数含义: 要添加的文字,位置,字体,大小,颜色,粗细
cv2.putText(img,'openCV',(10,500),font,4,(255,255,255),2)
ps:文章中的笔记都是根据OPENCV-PYTHON中文教程这本书的内容整理出来的,如果对这本书感兴趣,可以点击下方链接:https://pan.baidu.com/s/1UlWFgHmTuaj8TV55qpgHtw 提取码:f64k