计算机视觉之图像绘制(实现绘制线段、矩形、圆形、椭圆、任意多边形、文字和图片等功能)
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)
运行结果如下: