【从kitti开始自动驾驶】--6.1 下载tracking和2d侦测


本节将采用在jupyter notebook上的方式执行对单张图片进行二维侦测以及打标(画出二维侦测框i)效果工作的情况.

tracking资料存放在/kitti_folder/tracking中
jupyter工程存放在/test3_autodrive_ws/src/jupyter_prj下的2D_tracking_label.ipynb
数据文件存放在/home/qinsir/kitti_folder/tracking/data_tracking_label_2/training/label_02
下,可以看到是txt文件

1. 预准备

1.1 下载tracking 资料

  1. 进入kitti官网,选择tracking->multi-object tracking(其实可以下载rawdata里边的tracklets,不过出于小白阶段,还是用tracking比较简单)
    在这里插入图片描述

  2. 点选其中的download trainning labels of tracking data set,进行下载
    2

1.2 jupyter notebook下载

为了方便的执行python的程序来测试ROS, 这个下载比较简单,参考linux安装jupyter教程,基本多数电脑pip install完成后,就可以直接打开了
出现read_timeout等问题参考pip安装timeout解决方法2,将它的包换为jupyter即可

2. 预知识

2.1 对tracking数据分析

2.1.1 压缩包数据格式理解

解压后文件如下:
在这里插入图片描述

一共20种数据/20类环境,我们采用第一种:自行车和厢型车的环境

2.1.2 单文件理解

打开浏览器,键入kitti tracking 找到github上关于此的readme文档,图如下:
在这里插入图片描述

每个文件包含如下的参数,之后会在jupyter 和ROS 中读取到

2.2 在jupyter中查看tracking数据

运行代码:

import pandas as pd
import numpy as np

COLUMN_NAMES = ['frame', 'track_id', 'type', 'truncated', 'occluded', 'alpha', 'bbox_left', 'bbox_stop', 
               'bbox_right', 'bbox_bottom', 'height', 'width', 'length', 'pos_x', 'pos_y', 'pos_z', 'rot_y']

df = pd.read_csv('/home/qinsir/kitti_folder/tracking/data_tracking_label_2/training/label_02/0000.txt',
                header=None, sep=' ')

df.columns = COLUMN_NAMES
df.head()

显示如下:
数据可以看但参数中有,van(厢型车),上下左右坐标等等参数,以及3D位置

3. 在jupyter中框选object

3.1 数据处理

df.loc[df.type.isin(['Truck', 'Van', 'Tram']), 'type'] = 'car'   # 将列表中有的这三种车归类为car
df = df[df.type.isin(['car', 'Pedestrian', 'Cyclist'])]  #取出这三个类别,更新df
df             #查看
  • 将列表中这三种类型中存在的都命名为car,就是如果df中有这三种,都命名为car
  • 取出需要的类别,更新tf

3.2 提取需要的信息

#df.loc[2, ['bbox_left', 'bbox_top', 'bbox_right', 'bbox_bottom']] #读取第一帧的四个坐标,在列表里是2
box = np.array(df.loc[2, ['bbox_left', 'bbox_top', 'bbox_right', 'bbox_bottom']]) #转变为数组
box
  • 提取出第一帧的这四个信息,再转变为np数组

3.3 CV画出tracking的框

import cv2

image = cv2.imread('/home/qinsir/kitti_folder/2011_09_26/2011_09_26_drive_0005_sync/image_02/data/0000000000.png')
# 左上角,右下角,像素都是整数
top_left = int(box[0]), int(box[1])
right_down = int(box[2]), int(box[3])
# 画举行
cv2.rectangle(image, top_left, right_down, (255, 255, 0), 2)

cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

4. 效果一览

效果

5. python文件源码

import pandas as pd
import numpy as np
# 设定行名称
COLUMN_NAMES = ['frame', 'track_id', 'type', 'truncated', 'occluded', 'alpha', 'bbox_left', 'bbox_top', 
               'bbox_right', 'bbox_bottom', 'height', 'width', 'length', 'pos_x', 'pos_y', 'pos_z', 'rot_y']

df = pd.read_csv('/home/qinsir/kitti_folder/tracking/data_tracking_label_2/training/label_02/0000.txt',
                header=None, sep=' ')

df.columns = COLUMN_NAMES
df.head()
df.loc[df.type.isin(['Truck', 'Van', 'Tram']), 'type'] = 'car'   # 将列表中有的这三种车归类为car
df = df[df.type.isin(['car', 'Pedestrian', 'Cyclist'])]  #取出这三个类别,更新df
df             #查看
#df.loc[2, ['bbox_left', 'bbox_top', 'bbox_right', 'bbox_bottom']] #读取第一帧的四个坐标,在列表里是2
box = np.array(df.loc[2, ['bbox_left', 'bbox_top', 'bbox_right', 'bbox_bottom']]) #转变为数组
import cv2

image = cv2.imread('/home/qinsir/kitti_folder/2011_09_26/2011_09_26_drive_0005_sync/image_02/data/0000000000.png')
# 左上角,右下角,像素都是整数
top_left = int(box[0]), int(box[1])
right_down = int(box[2]), int(box[3])
# 画举行
cv2.rectangle(image, top_left, right_down, (255, 255, 0), 2)

cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值