点云数据预处理-binary转ascii格式(open3d处理PCD文件)
转化函数代码 :
def binary_to_ascii(pcd_name):
# 读取binary格式的PCD文件
pcd = o3d.io.read_point_cloud(pcd_name)
# 将点云从binary格式转换为ASCII格式
o3d.io.write_point_cloud(pcd_name.rsplit('.', 1)[0]+"_ascii.pcd", pcd, write_ascii=True)
1.点云数据读取函数
read_point_cloud(filename, format='auto', remove_nan_points=False,
remove_infinite_points=False, print_progress=False)
参数列表:
filename(str):需打开的点云文件路径。
format(str,可选,默认为’auto’) :要读取的文件的格式。默认为auto,函数会根据后缀自动识别文件类型,若指定文件格式,则函数会直接尝试已设定类型读取。
remove_nan_points(bool,可选,默认值=False):是否删除点云数据中包含NAN的点数据(无效的点数据)。true表示删除,false为不删除,默认值可查看库函数定义。
remove_infinite_points(bool,可选,默认值为False):是否删除点云数据中包含无穷的点。true表示删除,false为不删除,默认值可查看库函数定义。
print_progress(bool,可选,default=False):如果设置为true,控制台中会显示一个进度条。
2.点云数据保存函数
write_point_cloud(filename, pointcloud, format='auto', write_ascii=False,
compressed=False, print_progress=False)
参数列表:
filename:点云文件保存路径。
pointcloud :要写入的点云对象。
format(str,可选,默认为’auto’):输入文件的格式。如果未指定或设置为“auto”,则根据文件扩展名推断格式。
write_ascii(bool,可选,默认值=False):设置为“True”以ascii格式输出,否则将使用二进制格式。
compressed(bool,可选,default=False):设置为“True”以压缩格式写入。
print_progress(bool,可选,默认值=False):如果设置为true,进度条将显示在控制台
3.保存文件名
pcd_name.rsplit('.', 1)[0]+"_ascii.pcd"
将原有文件路径的通过rsplit(‘.’, 1)分割.一次将文件后缀去除后添加_ascii.pcd形成新的文件名,若想保存到其余文件可以修改路径。
4.通过配置write_ascii可以同样可以相似的ascii转binary格式如一下函数代码
def ascii_to_binary(pcd_name):
# 读取ascii格式的PCD文件
pcd = o3d.io.read_point_cloud(pcd_name)
# 将点云从ascii格式转换为binary格式
o3d.io.write_point_cloud(pcd_name.rsplit('.', 1)[0]+"_binary.pcd", pcd, write_ascii=False)