凸包表面积、体积、包围框的坐标、对角线
- 一、算法原理
- 1.计算表面积.
- 2.计算体积
- 3.返回包围框最大值坐标
- 4.返回包围框最小值坐标
- 5.包围盒的对角线长度
- 二、代码
- 三、结果展示
- 1.函数信息展示
- 2.点云数据
- 3.凸包后数据
- 四、相关链接
一、算法原理
1.计算表面积.
area = hull.get_surface_area() # 计算表面积
2.计算体积
volume = hull.get_volume() # 计算体积
3.返回包围框最大值坐标
pcd.get_max_bound() # 返回包围框最大值坐标
4.返回包围框最小值坐标
pcd.get_min_bound() # 返回包围框最小值坐标
5.包围盒的对角线长度
diameter = np.linalg.norm( # 点云数据中包围盒的对角线长度pcd.get_max_bound() # 返回包围框最大值坐标- pcd.get_min_bound()) # 返回包围框最小值坐标
二、代码
import numpy as np
import open3d as o3dif __name__ == '__main__':pcd = o3d.io.read_point_cloud("res/bunny.pcd")pcd.paint_uniform_color([0.5, 0.5, 0.5]) # 给点云渲染颜色print(pcd) # 输出点云点的个数hull, idx = pcd.compute_convex_hull()hull.paint_uniform_color([1, 0, 0]) # 给凸包渲染颜色area = hull.get_surface_area() # 计算表面积volume = hull.get_volume() # 计算体积print("表面积为:", area)print("体积为:", volume)diameter = np.linalg.norm( # 点云数据中包围盒的对角线长度pcd.get_max_bound() # 返回包围框最大值坐标- pcd.get_min_bound()) # 返回包围框最小值坐标print('包围盒的对角线长度:', diameter)print('包围框最大值坐标:', pcd.get_max_bound())print('包围框最小值坐标:', pcd.get_min_bound())o3d.visualization.draw_geometries([pcd, hull])
三、结果展示
1.函数信息展示
2.点云数据
3.凸包后数据
四、相关链接
凸包信息:open3d 凸包-CSDN博客
测试数据链接:https://pan.baidu.com/s/1IrR6r7m1OatsvmLOJ5phdA
提取码:lkix