图像入门2
图像入门2
1. 大纲
1、使用OpenCV绘制不同的几何形状
2、学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.sllipse(),cv.putText()等
2. 常见参数
img:绘制形状的图像
color:形状的颜色,作为元组传递
厚度:线或圆等的粗细。对闭合图形传递-1,填充形状,默认厚度为1
lineType:线的类型,是否为8连接线,抗锯齿线等。cv.LINE_AA。
3. 绘制各类几何图形
要绘制一条线,传递线开始和结束的坐标。创建一个黑色的图像,并从左上角到右下角绘制一条直线。
# 绘制一条厚度为5的蓝色对角线
cv.line(img, (0, 0), (511, 511), (48, 137, 186), 5)
要绘制一个矩形,传递矩形的左上角和右下角的坐标,其他参数类似。
# 绘制矩形
cv.rectangle(img, (384, 0), (510, 128), (156, 123, 212), 3)
要绘制一个圆,需要确定其中心和半径,其他参数类似。
# 绘制圆形
cv.circle(img, (447, 63), 63, (64, 172, 255), -1)
要绘制一个椭圆,需要确定中心的坐标,和长短轴的长度,angle是椭圆沿逆时针方向旋转的角度。startAngle和EndAngle表示从主轴沿顺时针方向测量的椭圆弧的开始和结束。即给出0和360给出完整的椭圆。
# 绘制椭圆
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 360, (112, 24, 36), -1)
如果要绘制多边形,首先需要确定各个顶点的坐标,创建一个ROW*1*2的数组,其中ROW是顶点数,并且类型为int32。
# 绘制多边形
pts = np.array([[100, 50], [50, 230], [270, 480], [480, 100]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv.polylines(img, [pts], True, (0, 255, 255))
如果要绘制文本,首先需要设置字体格式font,并调用cv.putText()函数,第一个参数是图像名称,第二个参数是文本内容,第三个参数是文本的起始位置,第四个参数是字体的格式,第五个参数是字体的大小,第六个参数是字体的颜色。为了获得更好的外观,我们使用lineType=cv.LINE.AA
# 绘制文本
font = cv.FONT_HERSHEY_COMPLEX
cv.putText(img, 'discipline', (10, 500), font, 2, (255, 255, 255), 2, cv.LINE_AA)
在完成上述代码之后,效果如下图所示:

4. 附录(完整代码)
import numpy as np
import cv2 as cv
if __name__ == "__main__":
# 创建黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制一条厚度为5的蓝色对角线
cv.line(img, (0, 0), (511, 511), (48, 137, 186), 5)
# 绘制矩形
cv.rectangle(img, (384, 0), (510, 128), (156, 123, 212), 3)
# 绘制圆形
cv.circle(img, (447, 63), 63, (64, 172, 255), -1)
# 绘制椭圆
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 360, (112, 24, 36), -1)
# 绘制多边形
pts = np.array([[100, 50], [50, 230], [270, 480], [480, 100]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv.polylines(img, [pts], True, (0, 255, 255))
# 绘制文本
font = cv.FONT_HERSHEY_COMPLEX
cv.putText(img, 'discipline', (10, 500), font, 2, (255, 255, 255), 2, cv.LINE_AA)
cv.imshow('drawing', img)
cv.waitKey(0)
cv.destroyAllWindows()
浙公网安备 33010602011771号