目录
数据集介绍:
对Nuscenes数据集一无所知???手把手带你玩转Nuscenes数据集 - 知乎
可以看出,相机(CAM)有六个,分别分布在前方(Front)、右前方(Front Right)、左前方(Front Left)、后方(Back)、右后方(Back Right)、左后方(Back Left);激光雷达(LIDAR)有1个,放置在车顶(TOP);毫米波雷达有五个,分别放置在前方(Front)、右前方(Front Right)、左前方(Front Left)、右后方(Back Right)、左后方(Back Left)。
安装:
pip install nuscenes-devkit
open3d可视化代码
可视化调试成功:
操作步骤:
把load_dir的参数改为data目录,比如windows的:
foldername=r'B:\data\nuscenes\PointClouds_Segmantic_Visualize-main\data'
self.load_dir(foldername)
教程:
Nuscenes基于Open3D的可视化 (已开源)_nuscenes 可视化-CSDN博客
https://github.com/Cascol-SCUT/PointClouds_Segmantic_Visualize
2d渲染
from nuscenes.nuscenes import NuScenes
import matplotlib.pyplot as plt
# 初始化 NuScenes 数据集
nusc = NuScenes(version='v1.0-mini', dataroot=r'E:\project\jijia\datasets\nuscenes_mini', verbose=True)
# 列出数据集中的所有场景
nusc.list_scenes()
# 存储所有前置摄像头数据的 token
cam_front_tokens = []
# 遍历所有场景
for scene in nusc.scene:
# 获取每个场景的第一个样本的 token
sample_token = scene['first_sample_token']
while sample_token:
# 获取当前样本
sample = nusc.get('sample', sample_token)
# 选择前置摄像头传感器
sensor = 'CAM_FRONT'
# 获取前置摄像头数据
cam_front_data = nusc.get('sample_data', sample['data'][sensor])
# 保存前置摄像头数据的 token
cam_front_tokens.append(cam_front_data['token'])
# 移动到下一个样本
sample_token = sample['next']
# 统一渲染所有前置摄像头数据
for token in cam_front_tokens:
nusc.render_sample_data(token)
也是open3d
nuScenes数据集使用方法(1)可视化初探-CSDN博客
import os
import matplotlib.pyplot as plt
from nuscenes.nuscenes import NuScenes
from nuscenes.utils.data_classes import LidarPointCloud
import open3d as o3d
nusc = NuScenes(version='v1.0-mini', dataroot='/home/xxxx/Downloads/nuScene_data', verbose=True)
my_scene = nusc.scene[0]
first_sample_token = my_scene['first_sample_token']
sample = nusc.get('sample', first_sample_token)
my_annotation_token = sample['anns'][18]
my_annotation_metadata = nusc.get('sample_annotation', my_annotation_token)
nusc.render_annotation(my_annotation_token)
plt.show()
top_lidar_token = sample['data']['LIDAR_TOP']
top_lidar_data = nusc.get('sample_data', top_lidar_token)
pcd_bin_file = os.path.join(nusc.dataroot, top_lidar_data['filename'])
# Load the .pcd.bin file.
pc = LidarPointCloud.from_file(pcd_bin_file)
pcd = pc.points.T
pcd = pcd.reshape((-1, 4))[:, 0:3]
point_cloud = o3d.geometry.PointCloud()
point_cloud.points = o3d.utility.Vector3dVector(pcd)
# 可视化点云
o3d.visualization.draw_geometries([point_cloud])
print("done")
原文链接:https://blog.csdn.net/qq_41816368/article/details/135116727
nuscenes-devkit
windows也可以
pip install nuscenes-devkit
github地址:
https://github.com/nutonomy/nuscenes-devkit
可视化笔记:
教程可以可视化:
NuSences 数据集解析以及 nuScenes devkit 的使用_nuscenes-devkit-CSDN博客
需要解压v1.0-test_meta的数据到v1.0-test_blobs,中,否则会报文件找不到的异常。
B:\data\nuscenes\v1.0-test_meta
NuScenesConverter可视化
import os
import sys
sys.path.insert(0, os.path.abspath(__file__).split('gd_scripts')[0])
sys.path.insert(0, '../../models/')
from converters import ImageConverter,NuScenesConverter
from datasets import load_dataset,Dataset,CLIPTransform
import cv2
import numpy as np;
def main():
data_dirs = [r'F:\Generate_Video\mini_val_4\cam_train\v0.0.1\config.json',r'F:\Generate_Video\mini_val_4\cam_val/v0.0.1\config.json']
# 定义常见颜色的常量
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)
CYAN = (0, 255, 255)
MAGENTA = (255, 0, 255)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
# 将这些颜色放入一个大列表
common_colors = [
RED, GREEN, BLUE, YELLOW,
CYAN, MAGENTA, WHITE, BLACK
]
# label_transform = CLIPTransform(device='cuda:0')
for data_dir in data_dirs:
dataset = load_dataset(data_dir)
for data in dataset:
img_array = np.array(data['image']);
img_rgb = cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR)
for ii, cornor in enumerate(data['corners']):
print(ii,'prompts',data['prompts'],'attributes', data['attributes'][ii])
cornor=cornor.astype(np.int32)
for box in cornor:
cv2.circle(img_rgb,tuple(box),2,common_colors[ii%len(common_colors)],2)
# cv2.circle(img_rgb,(int(box[0]),int(box[1])),2,(255,0,0),2)
img_hdmap = np.array(data['image_hdmap']);
img_hdmap_bgr = cv2.cvtColor(img_hdmap, cv2.COLOR_RGB2BGR)
cv2.imshow("img", img_rgb);
cv2.imshow("img_hdmap", img_hdmap_bgr);
cv2.waitKey()
if __name__ == '__main__':
main()