news 2026/1/19 17:44:58

第三课:Open3D点云数据处理:点云格式转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第三课:Open3D点云数据处理:点云格式转换

1 Open3D点云格式介绍

1.1 xyz

1.2 xyzn

1.3 xyzrgb

1.4 pts

1.5 ply

1.6 pcd

2 点云格式转换

2.1 读取点云数据

​编辑

2.2 pcd转ply

2.3 pcd转xyz

2.4 pcd转xyzrgb

2.5 pcd转pts


1 Open3D点云格式介绍

1.1 xyz

每一行包含 [x y z] ,其中的x, y, z 是三维坐标,坐标之间以空格分隔。

1.2 xyzn

每一行包含[x, y, z, nx, ny, nz], 其中的nx,ny,nz是法向量

1.3 xyzrgb

每一行包含[x, y, z, r, g, b], 其中的r,g,b是范围在[0, 1]的float类型

1.4 pts

第一行为整数,表示点云中的点数。之后每行为点坐标及其属性,可以是[x, y, z, i, r, g, b][x, y, z, r, g, b][x, y, z, i]或者[x, y, z]格式,i代表反射强度intensity, 其中xyzi为doublel类型,rgbuint8类型 |

比较有特点的是,pts格式的点云,行与行之间以空白行分隔。

下面以[x, y, z, i, r, g, b]类型为例展示

1.5 ply

ply文件能够同时包含点云和网格数据,有binary和ASCII码两种编码类型。更多内容请查看 Polygon File Format,

二进制binary格式

ASCII码格式

1.6 pcd

pcd格式是PCL指定的点云格式,更多内容请查看 Point Cloud Data

同样的,pcd也有binary和ASCII码两种编码。

binary编码

ASCII编码

2 点云格式转换

open3d进行点云格式转换,不涉及数据格式 ,直接保存为想要的类型即可。下面以pcd点云转换为其他格式的点云为例,进行示范。

2.1 读取点云数据

import open3d as o3d import numpy as np print("->正在加载点云... ") pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\Armadillo\Armadillo.pcd") print(pcd) print("->正在可视化点云") o3d.visualization.draw_geometries([pcd])

2.2 pcd转ply

import open3d as o3d print("->加载pcd点云...") pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny.pcd") print(pcd) print("->正在可视化点云") o3d.visualization.draw_geometries([pcd]) print("\n->保存为binary类型的ply点云...") o3d.io.write_point_cloud("H:/HTempWK/temp/open3d/data/savebunnyBinary.ply", pcd) # 读取保存得二进制点云数据进行展示 pcd_from_file = o3d.io.read_point_cloud("H:/HTempWK/temp/open3d/data/savebunnyBinary.ply") print("->正在可视化保存的点云...") o3d.visualization.draw_geometries([pcd_from_file]) print("\n->保存为ASCII码类型的ply点云...") o3d.io.write_point_cloud("H:/HTempWK/temp/open3d/data/savebunnyASCII.ply", pcd, write_ascii = True) # 读取保存得ASCII码点云数据进行展示 pcd_from_file = o3d.io.read_point_cloud("H:/HTempWK/temp/open3d/data/savebunnyASCII.ply") print("->正在可视化保存的点云...") o3d.visualization.draw_geometries([pcd_from_file])

2.3 pcd转xyz

import open3d as o3d print("->加载pcd点云...") pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny.pcd") # 显示点云 o3d.visualization.draw_geometries([pcd]) print("\n->保存xyz点云...") o3d.io.write_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny.xyz", pcd) print("->保存xyz点云完成") # 读取点云进行展示 pcd_from_file = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny.xyz") o3d.visualization.draw_geometries([pcd_from_file])

2.4 pcd转xyzrgb

import open3d as o3d import numpy as np pcd_path = r"H:\HTempWK\temp\open3d\pointdata\bunny.pcd" xyzrgb_path = r"H:\HTempWK\temp\open3d\pointdata\bunny.xyzrgb" pcd = o3d.io.read_point_cloud(pcd_path) points = np.asarray(pcd.points) z = points[:, 2] # 归一化到 0~1 z_norm = (z - z.min()) / (z.max() - z.min()) # 蓝 → 红 渐变 colors = np.zeros((len(points), 3)) colors[:, 0] = z_norm # R colors[:, 2] = 1 - z_norm # B pcd.colors = o3d.utility.Vector3dVector(colors) o3d.io.write_point_cloud(xyzrgb_path, pcd, write_ascii=True) pcd_from_file = o3d.io.read_point_cloud(xyzrgb_path) o3d.visualization.draw_geometries([pcd_from_file])

2.5 pcd转pts

import open3d as o3d print("->加载pcd点云...") pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny.pcd") print(pcd) print("->正在可视化点云") o3d.visualization.draw_geometries([pcd]) print("\n->保存pts点云...") o3d.io.write_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny.pts", pcd) # 读取pts数据进行展示 pcd_from_file = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny.pts") o3d.visualization.draw_geometries([pcd_from_file])
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/18 22:48:23

【2026年精选毕业设计:基于本地大模型的个人数字健康管家系统(含论文+源码+PPT+开题报告+任务书+答辩讲解)】

2026年精选毕业设计:基于本地大模型的个人数字健康管家系统(含论文源码PPT开题报告任务书答辩讲解)告别云端依赖!这个毕设项目让AI健康助手真正“住”进你的电脑——全程离线、隐私无忧、还能语音对话!全套资料开源&am…

作者头像 李华
网站建设 2026/1/17 10:31:27

创业公司技术选型建议:PyTorch-CUDA-v2.7镜像提升研发效率

创业公司技术选型建议:PyTorch-CUDA-v2.7镜像提升研发效率 在AI创业浪潮中,一个现实问题反复浮现:新入职的算法工程师第一天上班,花了整整一天配置环境——CUDA驱动版本不匹配、cuDNN安装失败、PyTorch和Python版本冲突……最终模…

作者头像 李华
网站建设 2026/1/17 6:53:30

多GPU并行训练入门:PyTorch-CUDA-v2.7镜像支持多卡配置

多GPU并行训练入门:PyTorch-CUDA-v2.7镜像支持多卡配置 在深度学习模型日益庞大的今天,一个130亿参数的语言模型用单张RTX 4090跑完一轮训练可能需要两周时间——这显然无法满足快速迭代的研发节奏。更现实的情况是,研究者刚调好环境&#xf…

作者头像 李华
网站建设 2026/1/11 20:05:29

Anaconda下载慢?直接使用预装环境的PyTorch-CUDA-v2.7镜像

PyTorch-CUDA-v2.7镜像:告别Anaconda下载慢,开箱即用的深度学习环境 在深度学习项目启动的前几个小时,你是否也曾经历过这样的场景:满怀热情地打开电脑,准备复现一篇最新论文,结果卡在了 conda install py…

作者头像 李华
网站建设 2026/1/17 5:20:02

YOLOv11 mAP评估脚本:在PyTorch中计算检测精度

YOLOv11 mAP评估脚本:在PyTorch中计算检测精度 在目标检测领域,模型一旦训练完成,真正的考验才刚刚开始——我们如何客观地衡量它的表现?尤其是在YOLOv11这类追求速度与精度平衡的新一代架构下,一个可靠、高效的评估流…

作者头像 李华
网站建设 2026/1/17 9:51:18

轻量级深度学习环境:PyTorch-CUDA-v2.7仅需2分钟启动

轻量级深度学习环境:PyTorch-CUDA-v2.7仅需2分钟启动 在深度学习项目开发中,最让人头疼的往往不是模型调参,而是——“环境装不上”。 你有没有经历过这样的场景?刚拿到一块新GPU服务器,满心欢喜准备跑第一个训练任务&…

作者头像 李华