opencv 画线 矩形 圆形 椭圆形 多边形 添加文字

opencv 画线 矩形 圆形 椭圆形 多边形 添加文字

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()

发表回复

您的电子邮箱地址不会被公开。