open3d 读取点云文件输出pcd常用的函数

    科技2022-07-14  111

    python之读取点云文件常用的函数

    1.读取bin(二进制) (1)读取包括有法向量信息的点云数据

    def read_point_cloud_bin(bin_path): """ Read point cloud in bin format Parameters ---------- bin_path: str Input path of Oxford point cloud bin Returns ---------- """ data = np.fromfile(bin_path, dtype=np.float32) # format: N, D = data.shape[0]// 6, 6 point_cloud_with_normal = np.reshape(data, (N, D)) point_cloud = o3d.geometry.PointCloud() point_cloud.points = o3d.utility.Vector3dVector(point_cloud_with_normal[:, 0:3]) point_cloud.normals = o3d.utility.Vector3dVector(point_cloud_with_normal[:, 3:6]) return point_cloud

    (2)或者用read_oxford_bin()

    data = read_oxford_bin(bin_path) point_cloud = o3d.geometry.PointCloud() point_cloud.points = o3d.utility.Vector3dVector(data[:, 0:3]) point_cloud.normals = o3d.utility.Vector3dVector(data[:, 3:6])

    2.读txt格式的点云文件 用到panda中的DataFrame,和pyntcloud

    data = np.genfromtxt(txt_path,delimiter = ",") data = DataFrame(data[:,0:3]) data.columns = ['x','y','z'] pcd_pynt = Pyntcloud(data) pcd = pcd_pynt.to_instance("open3d",mesh = False) point_cloud = o3d.geometry.PointCloud()

    3.直接读取、写pcd、mesh文件

    pcd = open3d.io.read_point_cloud(pcd_file_path) open3d.io.write_point_cloud("filename.pcd",pcd) mesh = open3d.io.triange_mesh(mesh_file_path) open3d.io.write_triange_mesh("filename.ply",mesh)
    Processed: 0.010, SQL: 8