Open3D精准定位点云特定点,绘制醒目立方体标记,提升数据解读效率与直观性。
Open3D是一个开源的跨平台计算机视觉库,它为开发人员提供了一个易于使用且高性能的3D数据处理平台。
# pcd:传入原始点云图
# point1:要进行标记的点
# point2:要进行标记的点
# 以point1、point2为点,在两者之间绘制立方体
def draw_cube_around_points(pcd, point1, point2):
# 计算线段的方向和长度
direction = point2 - point1
length = np.linalg.norm(direction)
# 假设我们想要一个边长为10的立方体(根据实际情况调整)
cube_size = 10.0
# 计算立方体的中心(线段的中点)
center = (point1 + point2) / 2
# 由于立方体是轴对齐的,我们可以简单地设置最小和最大边界
min_bound = center - np.array([cube_size / 2, cube_size / 2, cube_size / 2])
max_bound = center + np.array([cube_size / 2, cube_size / 2, cube_size / 2])
# 创建轴对齐的边界框(这实际上是一个立方体)
aabb = o3d.geometry.AxisAlignedBoundingBox(min_bound=min_bound, max_bound=max_bound)
aabb.color = [1, 0, 0] # 红色
# 可选:将两点添加到可视化中
# cloud = o3d.geometry.PointCloud()
# cloud.points = o3d.utility.Vector3dVector(np.vstack((point1, point2)))
# cloud.colors = o3d.utility.Vector3dVector([[1, 0, 0], [0, 0, 1]]) # 点1红色,点2蓝色
# 可视化
o3d.visualization.draw_geometries([aabb, pcd])