前言
点云作为三维空间中点的集合,广泛应用于计算机视觉、自动驾驶、无人机测绘、虚拟现实等多个领域。在这些应用中,高效、紧凑的点云数据存储和传输显得尤为重要。.bin
文件格式因其无冗余头信息、二进制存储的高效性而被广泛用于存储点云数据。本篇博客将详细介绍如何从原始点云数据出发,生成适合高效处理和传输的.bin
文件。
1. 环境准备
确保你的开发环境中安装了Python。你可以从Python官方网站下载并安装最新版本的Python。接下来,你需要安装一些必要的库,如numpy和open3d,这两个库分别用于数学计算和点云数据的可视化处理
`pip install numpy open3d`
2、加载点云数据
def read_pcd(pcd_path):
lines = []
num_points = None
with open(pcd_path, 'r') as f:
for line in f:
lines.append(line.strip())
if line.startswith('POINTS'):
num_points = int(line.split()[-1])
assert num_points is not None
points = []
for line in lines[-num_points:]:
x, y, z, i = list(map(float, line.split()))
#这里没有把i放进去,也是为了后面 x, y, z 做矩阵变换的时候方面
#但这个理解我选择保留, 因为可能把i放进去也不影响代码的简易程度
points.append((np.array([x, y, z, i])))
return points
3、bin文件加载可视化
bin_file ="point.bin"
points = np.fromfile(str(bin_file), dtype=np.float64).reshape(-1, 4)
pts = o3d.geometry.PointCloud()
pts.points = o3d.utility.Vector3dVector(points[:, :3])
o3d.visualization.draw_geometries([pts])
源码下载:
关注我的公众号auto_driver_ai(Ai fighting), 第一时间获取更新内容。