1、背景介绍
在点云三维重建中,常涉及到常见几何图形绘制,如直线、多边形、圆形、正方形、长方形等。因此,本次博客结合matplotlib库,介绍常见几何图形的绘制。
2、几何图形绘制
2.1 线段绘制
线段是一种常见的几何图形,基于matplotlib绘制线段代码如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# 定义线段的起点和终点坐标
x_start, y_start = 1, 1 # 起点坐标
x_end, y_end = 4, 5 # 终点坐标
# 创建一个新的图和坐标轴
plt.figure()
ax = plt.subplot()
# 使用plot函数绘制线段,需要传入两个点的坐标
ax.plot([x_start, x_end], [y_start, y_end], marker='o') # marker='o'用于标记起点和终点
# 设置图表的标题和坐标轴标签
plt.title("线段绘制示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 显示图形
plt.show()
2.2 多边形绘制
多边形也是一种常见几何图形,绘制代码与效果如下:
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# 定义多边形的顶点
vertices = np.array([[0.5, 0.5], [1, 0.1], [1, 1], [0.1, 1],[0.1,0.5],[0.5,0.5]])
# 创建一个图形和轴
fig, ax = plt.subplots()
# 绘制多边形的边
ax.plot(vertices[:, 0], vertices[:, 1], color='blue',marker='*')
# 设置坐标轴的范围和比例
ax.set_xlim(0, 1.5)
ax.set_ylim(0, 1.5)
plt.title("多边形绘制示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 显示图形
plt.show()
若对图像进行填充,则代码与效果如下:
# 填充图形
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# 定义多边形的顶点
vertices = np.array([[0.5, 0.5], [1, 0.1], [1, 1], [0.1, 1],[0.1,0.5],[0.5,0.5]])
# 创建一个图形和轴
fig, ax = plt.subplots()
# 绘制多边形的边
# ax.plot(vertices[:, 0], vertices[:, 1], color='blue',marker='*')
#如果要填充,用下面语句
ax.fill(vertices[:, 0], vertices[:, 1], color='blue')
ax.plot(vertices[:, 0], vertices[:, 1], '*--', color='red')
# 设置坐标轴的范围和比例
ax.set_xlim(0, 1.5)
ax.set_ylim(0, 1.5)
plt.title("多边形绘制示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 显示图形
plt.show()
2.3 矩形(正方形)绘制
矩形与正方形是常用的几何形状,其绘制根据函数
import matplotlib.pyplot as plt
import matplotlib.patches as patches
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# 创建一个新的图和坐标轴
fig, ax = plt.subplots()
# 定义矩形的位置和大小
x, y = 0.2, 0.2
width, height = 0.4, 0.4
# 创建矩形
rect = patches.Rectangle((x, y), width, height, linewidth=1, edgecolor='r', facecolor='none')
# 将矩形添加到坐标轴
ax.add_patch(rect)
# 计算矩形的四个顶点坐标
vertices = [(x, y), (x + width, y), (x, y + height), (x + width, y + height)]
# 使用scatter标记矩形的四个顶点,并设置相同的颜色
# 这里我们使用'o'作为标记样式,'red'作为颜色
ax.scatter(*zip(*vertices), c='blue', marker='o')
# 设置坐标轴的范围
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
plt.title("正方形(矩形)绘制")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 显示图形
plt.show()
2.4 圆形绘制
圆形几何模型也是一种常见几何形状,代码与效果如下:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# 创建一个图形和轴
fig, ax = plt.subplots()
# 绘制一个圆形
circle = patches.Circle((0.5, 0.5), 0.2, linewidth=1, edgecolor='r', facecolor='none')
ax.add_patch(circle)
# 设置坐标轴的范围和比例
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax=plt.gca()
ax.set_aspect('equal')
plt.title("圆形绘制绘制")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 显示图形
plt.show()
3、总结
介绍了常见几何形状绘制方法,可根据实际需要调整参数,进行图形绘制。
参考网页:Python Matplotlib 常见图形绘制-CJavaPy