nuScenes 数据集 可视化

目录

数据集介绍:

安装:

open3d可视化代码

可视化调试成功:

2d渲染

nuscenes-devkit

可视化笔记:

NuScenesConverter可视化


数据集介绍:

对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()

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值