点云学习(1): 获取点云的包络框

该文介绍了如何使用open3d库在Python中处理点云数据,包括获取轴对齐和非轴对齐的包围盒(AABB和OBB),以及如何进行点云的边界采样。轴对齐包络框通过get_axis_aligned_bounding_box()函数获取,非轴对齐包络框则通过get_oriented_bounding_box()计算得到。此外,还展示了如何根据边界生成采样点云。
摘要由CSDN通过智能技术生成
1. 记录一些容易忘记的点云操作

----后续一定补充

1.获取轴对齐包络框

下面的get_axis_aligned_bounding_box(),get_min_bound(),get_max_bound()等函数非常好用

import open3d as o3d
import numpy as np

# 读取点云数据
pcd = o3d.io.read_point_cloud("input.pcd")

# 获得点云边界
bbox = pcd.get_axis_aligned_bounding_box()

# 获得边界最小值和最大值
min_bound = bbox.get_min_bound()
max_bound = bbox.get_max_bound()

# 生成采样点云
interpolation_distance =  0.05
interpolated_pcd = o3d.geometry.PointCloud()
for x in np.arange(min_bound[0], max_bound[0], interpolation_distance):
    for y in np.arange(min_bound[1], max_bound[1], interpolation_distance):
        for z in np.arange(min_bound[2], max_bound[2], interpolation_distance):
            point = np.array([x, y, z])

            interpolated_pcd.points.append(point)

# 显示采样点云
o3d.visualization.draw_geometries([interpolated_pcd])

2.获取非轴对齐包络框

import numpy as np
import open3d as o3d

pcd = o3d.io.read_point_cloud("xx.pcd") # 读取点云数据 

print("1. 轴对齐 aabb 框 =======================================")
bbox = pcd.get_axis_aligned_bounding_box() # 获得点云边界 # 轴对齐的 aabb 框
min_bound = bbox.get_min_bound() # 获得边界最小值和最大值
max_bound = bbox.get_max_bound()
print("长度:",max_bound[0]-min_bound[0],"宽度:",max_bound[1]-min_bound[1],"高度:",max_bound[2]-min_bound[2])

print("2. 非轴对齐 aabb 框 =======================================")
# 计算点云的OBB
obb = pcd.get_oriented_bounding_box()
# 获取OBB的中心点坐标、大小和旋转矩阵
obb_center = obb.center
obb_extent = obb.extent
obb_rotation = obb.R

# 打印非轴对齐OBB的信息
# print("OBB Center:", obb_center)
# print("OBB Extent:", obb_extent)
# print("OBB Rotation Matrix:")
print(("\t{:>8}" * 3).format(obb_extent[0], obb_extent[1],obb_extent[2]))
print(obb_rotation)
# 创建一个可视化窗口
# o3d.visualization.draw_geometries([pcd, obb])
# o3d.visualization.draw_geometries([obb])

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值