IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> KITTI自动驾驶数据集可视化教程 -> 正文阅读

[Python知识库]KITTI自动驾驶数据集可视化教程

在这里插入图片描述
本文介绍关于自动驾驶数据集KITTI的基本操作,包括CameraLiDAR可视化教程,源码已上传:https://download.csdn.net/download/cg129054036/20907604


1. 数据准备

KITTI 数据 (calib, image_2, label_2, velodyne) 添加到 dataset/KITTI/object/training文件夹下。
目录文件结构如下:

├── dataset
│   ├── KITTI
│   │   ├── object
│   │   │   ├──KITTI
│   │   │      ├──ImageSets
│   │   │   ├──training
│   │   │      ├──calib & velodyne & label_2 & image_2 
├── kitti_object.py
├── kitti_test.py
├── kitti_util.py
├── viz_util.py

2. Requirements

为了显示物体 2D bbox3D bboxUbuntu系统需要安装以下工具:

  • mayavi
  • pillow
  • vtk
  • opencv
  • PTL
  • matplotlib
  • numpy

3. 可视化操作

下面依次展示 KITTI 数据集可视化结果,可视化操作代码存放在 kitti_test.py 文件中,这里通过设置 data_idx=10 来展示编号为000010的数据,共有9种可视化操作,依次为:

  • 图片显示
  • 图片上绘制2D bbox
  • 图片上绘制3D bbox
  • Lidar在图片上投影
  • LidarFOV图
  • Lidar三维可视化
  • Lidar绘制3D bbox
  • Lidar鸟瞰图
  • Lidar鸟瞰图绘制2D bbox

代码中dataset需要修改为数据集实际路径

def visualization():
    import mayavi.mlab as mlab
    dataset = kitti_object(os.path.join(ROOT_DIR, '../dataset/KITTI/object')) 
    
    # determine data_idx
    data_idx = 10
    
    # Load data from dataset
    objects = dataset.get_label_objects(data_idx) 
    print("There are %d objects.", len(objects))
    img = dataset.get_image(data_idx)             
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    img_height, img_width, img_channel = img.shape 
    pc_velo = dataset.get_lidar(data_idx)[:,0:3]  
    calib = dataset.get_calibration(data_idx)   

(1) 图片显示

Image.fromarray(img).show()

在这里插入图片描述
(2) 图片上绘制2D bbox

这里KITTI 数据集给出了目标在图片上的坐标位置 (Xmin, Ymin, Xmax, Ymax),直接绘图即可。

show_image_with_boxes(img, objects, calib, False)

在这里插入图片描述
(3) 图片上绘制3D bbox

绘制物体 3D bbox时,需要进行坐标系转换,KITTI 数据集中给出的是物体在相机坐标系的位置 (x,y,z),根据物体 bbox 尺寸(h,w,l) 首先计算 3D bbox 8个顶点坐标,然后借助标定文件将其转换为图片坐标系坐标 (u, v)

show_image_with_boxes(img, objects, calib, True)

在这里插入图片描述
(4) Lidar在图片上投影

Lidar 坐标下各 point 坐标转换为图片坐标系下坐标,然后根据图片尺寸选取投影点。

show_lidar_on_image(pc_velo, img, calib, img_width, img_height)

在这里插入图片描述
(5) LidarFOV图

imgfov_pc_velo, pts_2d, fov_inds = get_lidar_in_image_fov(pc_velo, calib, 0, 0, img_width, img_height, True)
draw_lidar(imgfov_pc_velo, show=True)

在这里插入图片描述
(6) Lidar三维可视化

 draw_lidar(pc_velo, show=True)

在这里插入图片描述
(7) Lidar绘制3D bbox

绘制Lidar3D bbox时,需要进行坐标系转换,KITTI 数据集中给出的是物体在相机坐标系的位置(x,y,z),这里借助标定文件将其转换为Lidar坐标系下位置,同时借助物体bbox 尺寸(h,w,l)计算3D框8个顶点坐标。

show_lidar_with_boxes(pc_velo, objects, calib,  True, img_width, img_height)

在这里插入图片描述
(8) Lidar鸟瞰图

鸟瞰图绘制时将点云数据进行了预处理,只选取 x 坐标位于[0,70.4],y坐标位于[-40,40]的有效点。

show_lidar_topview(pc_velo, objects, calib)

在这里插入图片描述
(9) Lidar鸟瞰图绘制2D bbox

绘制时为了区分物体距激光雷达距离,将30米内目标使用绿色标志30米-50米内目标使用红色标志50米以外目标使用蓝色标志(场景0000010无此距离目标。)

img1 = cv2.imread('000010_BEV.png')
img = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
show_lidar_topview_with_boxes(img1, objects, calib)

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:12:00  更:2021-08-09 10:12:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 9:51:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码