import cv2 import numpy as np import matplotlib.pylab as plt import matplotlib as mpl # 绘制线 # 生成一个空的黑底图像 # np.zeros()有两个参数,一个是创建的图片矩阵大小,另一个是数据类型。 # 512,512是像素(第一个512 像素 高,第二个512 像素 宽),3指BGR三种颜色。 img = np.zeros((512, 512, 3), np.uint8) img_line = cv2.line(img, # 目标图像 (0, 0), # 起点 (256, 256), # 终点 (255, 0, 0), # 颜色 5) # 粗细 img_line = cv2.cvtColor(img_line, cv2.COLOR_BGR2RGB) # plt.imshow(img_line) # plt.show() # 绘制矩形 img = np.zeros((512, 512, 3), np.uint8) img_rectangle = cv2.rectangle(img, # 目标图像 (128, 128), # 顶点 (256, 256), # 相对的顶点 (0, 255, 0), # 颜色 3) # 粗细 img_rectangle = cv2.cvtColor(img_rectangle, cv2.COLOR_BGR2RGB) # 绘制圆形 img = np.zeros((512, 512, 3), np.uint8) cv2.circle(img, # 目标图像 (256, 256), # 圆心 256, # 半径 (0, 0, 255), # 颜色 -1) # 填充 img_circle = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 绘制椭圆形 img = np.zeros((512, 512, 3), np.uint8) cv2.ellipse(img, # 目标图像 (256, 256), # 中心 (256, 128), # 长轴、短轴 0, # 逆时针旋转角度 0, # 开始角度 360, # 结束角度 (0, 0, 255), # 颜色 -1) # 填充 img_ellipse = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 绘制多边形 img = np.zeros((512, 512, 3), np.uint8) pts = np.array([[50, 50], [400, 100], [462, 462], [100, 400]], np.int64) pts = pts.reshape((-1, 1, 2)) cv2.polylines(img, # 目标图像 [pts], # 顶点 True, # 是否闭合 (0, 0, 255), # 颜色 3) # 粗细 img_poly = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 添加文字 img = np.zeros((512, 512, 3), np.uint8) font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img, # 目标图像 "test", # 文字 (10, 300), # 文本框左下角 font, # 文字字体 4, # 文字大小 (255, 255, 255), # 文字颜色 3, # 文字粗细 cv2.LINE_AA) # 文字线型 img_put = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 解决plt 画图中文不显示问题 mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体为黑体 mpl.rcParams['axes.unicode_minus'] = False # 正常显示负号 # 显示图像 # plt.subplot(nrows, ncols, index) # 表示在当前画布的右上角创建一个1行3列的绘图区域,同时 选择在第 1 个位置绘制子图。 plt.subplot(1, 7, 1) plt.xticks([]), plt.yticks([]) # 隐藏x和y轴 plt.imshow(img_line) plt.title('线') plt.subplot(1, 7, 2) plt.xticks([]), plt.yticks([]) # 隐藏x和y轴 plt.imshow(img_rectangle) plt.title('矩形') plt.subplot(1, 7, 3) plt.xticks([]), plt.yticks([]) # 隐藏x和y轴 # plt.imshow(blur, 'gray') plt.imshow(img_circle) plt.title('圆形') plt.subplot(1, 7, 4) plt.xticks([]), plt.yticks([]) # 隐藏x和y轴 plt.imshow(img_ellipse) plt.title('椭圆形') plt.subplot(1, 7, 5) plt.xticks([]), plt.yticks([]) # 隐藏x和y轴 plt.imshow(img_poly) plt.title('多边形') plt.subplot(1, 7, 6) plt.xticks([]), plt.yticks([]) # 隐藏x和y轴 plt.imshow(img_put) plt.title('文字') plt.show()