nuscenes lidar数据存储格式 :(x,y,z,intensity,ring index)
读取 Nuscenes 数据并显示:
import os
import numpy as np
import struct
import open3d
def read_bin_velodyne(path):
pc_list=[]
with open(path,'rb') as f:
content=f.read()
pc_iter=struct.iter_unpack('fffff',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 main():
root_dir='data/'
filename=os.listdir(root_dir)
file_number=len(filename)
pcd=open3d.open3d.geometry.PointCloud()
for i in range(file_number):
path=os.path.join(root_dir, filename[i])
print(path)
example=read_bin_velodyne(path)
# From numpy to Open3D
pcd.points= open3d.open3d.utility.Vector3dVector(example)
open3d.open3d.visualization.draw_geometries([pcd])
if __name__=="__main__":
main()
读取Nuscenes一个文件,具体使用方案参考官网及其他材料:
from nuscenes.nuscenes import NuScenes
nusc = NuScenes(version='v1.0-mini', dataroot='/media/guoan/Elements/nuscenes/v1.0-mini', verbose=True)
my_scene = nusc.scene[0]
first_sample_token = my_scene['first_sample_token']
my_sample = nusc.get('sample', first_sample_token)
sensor = 'LIDAR_TOP'
lidar_top_data = nusc.get('sample_data', my_sample['data'][sensor])
print(lidar_top_data)
str='/media/guoan/Elements/nuscenes/v1.0-mini/'+lidar_top_data['filename']
f = open(str, "rb")
data = f.read() #每次输出一个字节
print(data)