1、功能介绍:
python代码使用 numpy
和 open3d
库,生成一个三维随机点云,并创建一个水平平面(z=0)作为参考面,然后将它们一起可视化。
这段代码的主要作用是:生成一个随机的三维点云数据、构造一个位于 z=0 的二维平面网格(TriangleMesh)、使用 Open3D 可视化这两个几何体:点云和平面
适合用于演示点云和基础几何体的构建与可视化,也可用于测试或算法验证场景(如后续进行平面拟合、分割等任务的基础示例)。
2、代码部分:
import numpy as np
import open3d as o3d
# 生成随机点云
np.random.seed(42)
n_points = 100
size = 10 # 点云的范围
# 随机生成 x, y 坐标
x = np.random.uniform(-size, size, n_points)
y = np.random.uniform(-size, size, n_points)
z = np.random.uniform(-size / 2, size / 2, n_points) # 假设 z 坐标范围在平面上下
# 将点组合成点云
points = np.vstack((x, y, z)).T
# 创建 open3d 点云对象
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points)
# 创建平面顶点
# 假设平面方程是 z = 0(平行于XY平面),我们定义一个平面
x_min, x_max = -size, size
y_min, y_max = -size, size
# 创建四个角点
vertices = np.array([
[x_min, y_min, 0], # 点 1
[x_max, y_min, 0], # 点 2
[x_max, y_max, 0], # 点 3
[x_min, y_max, 0] # 点 4
])
# 创建两个三角形,以组成平面
triangles = [[0, 1, 2], [0, 2, 3]]
# 创建 TriangleMesh 对象
plane_mesh = o3d.geometry.TriangleMesh()
# 设置平面网格的顶点和三角形
plane_mesh.vertices = o3d.utility.Vector3dVector(vertices)
plane_mesh.triangles = o3d.utility.Vector3iVector(triangles)
# 给平面网格着色(绿色)
plane_mesh.paint_uniform_color([0.1, 0.9, 0.1])
# 可视化点云和平面网格
o3d.visualization.draw_geometries([pcd, plane_mesh], window_name="Point Cloud and Plane")