功能:python实现批量读取并显示bin格式的点云文件
import math
import numpy as np
import struct
import os
import open3d as o3d
def read_velodyne_bin(path):
pc_list = []
with open(path, 'rb') as f:
content = f.read()
pc_iter = struct.iter_unpack('ffff', content)
for idx, point in enumerate(pc_iter):
pc_list.append([point[0], point[1], point[2]])
return np.asarray(pc_list, dtype=np.float32)
def show_point(data):
pcd = o3d.geometry.PointCloud()
# pcd.points = o3d.utility.Vector3dVector(origin)
# o3d.visualization.draw_geometries([pcd])
pcd.points = o3d.utility.Vector3dVector(data)
o3d.visualization.draw_geometries([pcd])
def main():
root_dir = '/home/gmm/snowyweather/Lidar' # 激光雷达bin文件路径
cat = os.listdir(root_dir)
iteration_num = len(cat)
for i in range(iteration_num):
filename = os.path.join(root_dir, cat[i])
db_np = read_velodyne_bin(filename)
show_point(db_np)
if __name__ == main():
main()
读取显示的效果图如下