昨天的视频操作学习笔记链接为:
今天学习在opencv上的画图功能
先来看一些几个函数中都会用到的参数:
img:想要绘制形状的图像
color:形状的颜色,如BGR彩色用元组表示,(255,0,0)代表蓝色,灰度图只要输入灰度值就可。
thickness:线或圈的粗细。如果闭合图像(比如圈)设置为1,则这个圈会被填充,默认为1.
lineType:线的类型,是否8连通还是抗锯齿等。默认为8连通,cv2.LINE_AA 提供了抗锯齿线条,适合画曲线。
画一条线要确定线开始和结束的坐标。
代码(创建一个黑色背景的图片,在图片上画一条从左上角到右下角的蓝色线条):

import numpy as np
import cv2 as cv
# Create a black image
img = np.zeros((512,512,3), np.uint8)
# Draw a diagonal blue line with thickness of 5 px
cv.line(img,(0,0),(511,511),(255,0,0),5)

np.zeros(shape, dtype=float, order=‘C’):参数为形状,数据类型(默认numpy.float64),可选参数(c代表与c语言类似,行优先;F代表列优先);返回一个给定形状和类型的用0填充的数组。
cv.line( img, pt1, pt2, color[, thickness[, lineType[, shift]]]):pt1表示线段的起始坐标,pt2表示终止坐标。

想要画一个矩形,需要确定函数的左上角顶点和右下角顶点的坐标。
在图像右上角画一个绿色的矩形:
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

画圆需要确定圆中心坐标和半径:
cv.circle(img,(447,63), 63, (0,0,255), -1)

画椭圆需要几个参数,一个是中心坐标(x,y),然后是长轴和短轴的长度,椭圆沿逆时针方向旋转的角度,椭圆弧沿顺时针方向起始的角度和结束角度,比如0到360是整个椭圆。
在图像的中心绘制半个椭圆:
cv.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

画多边形,需要每个顶点的坐标,用这些点的坐标构建一个大小等于函数 Row x1x2的数组,行数就是点的数目。数组类型必须是int32。
画一个黄色的具有四个顶点的多边形:
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv.polylines(img,[pts],True,(0,255,255))

cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])
可以画很多条线。只要把想要画的线放在一个列表中,将这个列表传给函数就好。

如果想要在图像上放文本,需要以下参数:你想要写的文本、位置、字体、大小,还有一些属性如颜色,粗细,线条的类型等,推荐线条的类型为lineType = cv.LINE_AA。