计算机视觉之图像绘制(实现绘制线段、矩形、圆形、椭圆、任意多边形、文字和图片等功能)

1.线段绘制

调用api中的line方法绘制线段,参数有目标图像dst、线段起点和终点、线段颜色、线段粗细以及线段样式,测试代码如下:

 1 import cv2
 2 import numpy as np
 3 import random
 4 newImageInfo = (500,500,3)
 5 dst = np.zeros(newImageInfo,np.uint8)
 6 # line 绘制线段 参数 1 dst 2 起始位置 3 终止位置 4 color
 7 cv2.line(dst,(100,100),(400,400),(0,0,255))
 8 # line 参数 5 增加一个线条的宽度
 9 cv2.line(dst,(100,200),(400,200),(0,255,255),20)
10 # line 参数 6 增加一个线条的类型 更加光滑
11 cv2.line(dst,(100,300),(400,300),(0,255,0),20,cv2.LINE_AA)
12 # 绘制三角形 就是绘制三条线段 保证起止点一样使得三角形闭合
13 cv2.line(dst,(200,150),(50,250),(25,100,255),10)
14 cv2.line(dst,(50,250),(400,380),(25,100,255),10)
15 cv2.line(dst,(400,380),(200,150),(25,100,255),10)
16 cv2.imshow('dst',dst)
17 cv2.waitKey(0)

运行结果如下:

2.矩形绘制

调用api中的rectangle方法实现矩形的绘制,参数有dst目标图像、左上角坐标、右下角坐标、颜色以及是否填充等,测试代码如下:

1 import cv2
2 import numpy as np
3 newImageInfo = (500,500,3)
4 dst = np.zeros(newImageInfo,np.uint8)
5 # 绘制矩形 参数 1 dst  2 左上角 3 右下角 4 颜色 5 是否填充 负数填充 正数为线条宽度
6 cv2.rectangle(dst,(50,100),(200,300),(255,0,0),3)
7 cv2.imshow('dst',dst)
8 cv2.waitKey(0)

运行结果如下:

3.圆形绘制

调用api中的circle方法实现矩形的绘制,参数有dst目标图像、圆心、半径、颜色以及是否填充等,测试代码如下:

1 import cv2
2 import numpy as np
3 newImageInfo = (400,400,3)
4 dst = np.zeros(newImageInfo,np.uint8)
5 # 绘制圆形 参数 1 dst 2 圆心 3 半径 4 颜色 5 是否填充 负数填充 正数为线条宽度
6 cv2.circle(dst,(150,150),(50),(0,255,0),2)
7 cv2.imshow('dst',dst)
8 cv2.waitKey(0)

运行结果如下:

4.椭圆绘制

调用api中的ellipse方法实现矩形的绘制,参数有dst目标图像、圆心、长短轴、偏转角度、起止角度、颜色以及是否填充等,测试代码如下:

1 import cv2
2 import numpy as np
3 newImageInfo = (400,400,3)
4 dst = np.zeros(newImageInfo,np.uint8)
5 # 绘制椭圆形 参数 1 2 圆心 3 轴长度 长轴和短轴 4 偏转角度 5 起始角度 6 终止角度 7 颜色 8 是否填充
6 cv2.ellipse(dst,(256,256),(150,100),0,0,180,(255,255,0),-1)
7 cv2.imshow('dst',dst)
8 cv2.waitKey(0)

运行结果如下:

4.任意多边形绘制

 测试代码如下:

 1 import cv2
 2 import numpy as np
 3 newImageInfo = (400,500,3)
 4 dst = np.zeros(newImageInfo,np.uint8)
 5 # 绘制任意多边形
 6 points = np.array([[150,50],[140,140],[200,170],[250,250],[150,50]],np.int32)
 7 print(points.shape)
 8 # 矩阵转置
 9 points = points.reshape((-1,1,2))
10 print(points.shape)
11 cv2.polylines(dst,[points],True,(0,255,255),3)
12 cv2.imshow('dst',dst)
13 cv2.waitKey(0)

运行结果如下:

5.文字绘制

 调用api中的ellipse方法实现矩形的绘制,参数有dst目标图像、坐标、字体样式及大小,颜色,粗细以及线条样式等,测试代码如下:

 1 import cv2
 2 import numpy as np
 3 img = cv2.imread('image0.jpg', 1)
 4 font = cv2.FONT_HERSHEY_SIMPLEX
 5 # 绘制矩形
 6 cv2.rectangle(img,(200,100),(500,400),(0,255,0),3)
 7 # 添加文字 参数 1 dst 2 文字内容 3 坐标 4 5 字体大小 6 color 7 粗细 8 linrtype
 8 cv2.putText(img,'This is flower',(100,300),font,1,(200,100,255),2,cv2.LINE_AA)
 9 cv2.imshow('dst',img)
10 cv2.waitKey(0)

运行结果如下:

6.图片绘制

测试代码如下:

 1 import cv2
 2 img = cv2.imread('Jerry.jpg',1)
 3 height = int(img.shape[0]*0.2)
 4 width = int(img.shape[1]*0.2)
 5 imgResize = cv2.resize(img,(width,height))
 6 for i in range(0,height):
 7     for j in range(0,width):
 8         img[i+100,j+120] = imgResize[i,j]
 9 cv2.imshow('src',img)
10 cv2.waitKey(0)

运行结果如下:

原文地址:https://www.cnblogs.com/shixinzei/p/10899416.html