如何将HDF5数据集内的3D点云数据导出为.ply文件格式
HDF5数据集complete_pcds转PLY文件实现方案
前置依赖安装
执行以下命令安装所需工具库:
pip install h5py numpy open3d
实现代码
import h5py import numpy as np import open3d as o3d # 替换为你的HDF5文件路径 hdf5_path = "your_file.h5" # 输出PLY文件的文件夹路径,需提前创建 output_dir = "./ply_output/" # 读取HDF5文件中的complete_pcds数据集 with h5py.File(hdf5_path, 'r') as f: complete_pcds = f['complete_pcds'][:] # 获取数据集行数,即3D模型的总数量 model_count = complete_pcds.shape[0] # 遍历每一行数据生成PLY文件 for idx in range(model_count): # 提取当前3D模型的点云坐标,默认每行为N*3的xyz坐标数组 point_cloud_data = complete_pcds[idx] # 过滤掉可能的无效值(如全零行、nan值,按需开启) # point_cloud_data = point_cloud_data[~np.isnan(point_cloud_data).any(axis=1)] # point_cloud_data = point_cloud_data[np.sum(point_cloud_data, axis=1) != 0] # 创建Open3D点云对象 pcd = o3d.geometry.PointCloud() pcd.points = o3d.utility.Vector3dVector(point_cloud_data) # 导出为PLY文件 output_path = f"{output_dir}/model_{idx}.ply" o3d.io.write_point_cloud(output_path, pcd)
补充说明
- 若
complete_pcds中除了xyz坐标外还存储了颜色、法向量等属性,可对应赋值给pcd.colors、pcd.normals属性后再导出 - 若不想安装Open3D,可使用
plyfile库实现PLY写入,只需替换导出部分的代码逻辑即可 - 生成的PLY文件可直接用Meshlab、CloudCompare等3D查看工具打开预览
内容的提问来源于stack exchange,提问作者conjuring
相关产品推荐
相关产品推荐

