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)

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐