2.23 使用python解析.bag数据集(无需虚拟机和ROS)
方法描述
rosbag格式的数据不能直接使用,需要读取出jpg图像和csv文件,网上的大多教程都是安装rosbag软件或者docker软件,然后在linux终端下执行一系列的命令进行提取,这太复杂!
找到一篇使用python解析rosbag数据的代码放在这里供大家参考:
Udacity CH2 数据集下载及python 解析
'''
Generate images and steering angles from hmb3.bag
Modified from
https://github.com/udacity/self-driving-car/blob/master/steering-models/evaluation/generator.py
'''
import argparse
import rosbag
from io import StringIO, BytesIOfrom keras_preprocessing import image
from rosbag import bag
from scipy import misc
import numpy as np
import csv
import os
KEY_NAME = {'/vehicle/steering_report': 'steering','/center_camera/image_color/c': 'image',
}def update(msg, d):key = KEY_NAME.get(msg[0])if key is None: returnd[key] = msgdef gen(bagpath):print("Getting bag")bag = rosbag.Bag(bagpath)print('Got bag')image = {}total = bag.get_message_count()count = 0for e in bag.read_messages():count += 1if count % 10000 == 0:print ( count / total)if e[0] in ['/center_camera/image_color/compressed']:#print(e)if len({'steering'} - set(image.keys())):continueif image['steering'][1].speed < 5.: continues = BytesIO(e[1].data)img = misc.imread(s)yield img, np.copy(img), image['steering'][1].speed,\image['steering'][1].steering_wheel_angle, e[2].to_nsec()last_ts = e[2].to_nsec()else:update(e, image)if __name__ == '__main__':img_paths = image.list_pictures('hmb/testing/', ext='jpg') #解析出来的图片的保存路径data_iter = gen('./testing/HMB_3.bag') # rosbag文件所在路径next(data_iter)with open('hmb/testing/hmb3_steering.csv', 'w') as hmb1csv: #保存解析出来的csv文件writer = csv.writer(hmb1csv, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)writer.writerow([str.encode('timestamp'),str.encode('steering angle')])for image_pred, image_disp, speed, steering, ts in data_iter:misc.imsave('hmb/testing/'+ str(ts) + '.jpg', image_disp) #保存解析的图片#print(ts)csvcontent = []csvcontent.append(ts)csvcontent.append(steering)writer.writerow(csvcontent)
遇到问题
会遇到的问题就是如何安装
rosbag?
import rosbag
经过试验好几个解决方法,最好就是结合以下步骤,按顺序安装:
pip install bagpy
pip install roslib -i https://rospypi.github.io/simple/
pip install genpy -i https://rospypi.github.io/simple/
pip install genmsg -i https://rospypi.github.io/simple/
pip install roslz4 -i https://rospypi.github.io/simple/
pip install pycrypto如果遇到报错:VC14 则更改为pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pycryptodome
pip install rosbag -i https://rospypi.github.io/simple/最后再安装rosbag
这里给出几个安装源:
清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/阿里云:http://mirrors.aliyun.com/pypi/simple/中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/华中科技大学:http://pypi.hustunique.com/豆瓣源:http://pypi.douban.com/simple/腾讯源:http://mirrors.cloud.tencent.com/pypi/simple华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/格式:pip install [包名] -i [pip源URL]
参考的解决方案:
conda虚拟环境使用rosbag等包
rosbag库的安装
.python 报错汇总-- pip install pycrypto2
2.23 使用python解析.bag数据集(无需虚拟机和ROS)相关推荐
- python 手动读取cifar10_如何用python解析cifar10数据集图片
概述 通用图像分类公开的标准数据集常用的有CIFAR.ImageNet.COCO等,常用的细粒度图像分类数据集包括CUB-200-2011.Stanford Dog.Oxford-flowers等.其 ...
- 使用Python解析MNIST数据集
五月两场 | NVIDIA DLI 深度学习入门课程 5月19日/5月26日一天密集式学习 快速带你入门阅读全文> 正文共948个字(不含代码),2张图,预计阅读时间15分钟. 前言 最近在学 ...
- python idx是什么_使用Python解析MNIST数据集(IDX文件格式)
前言 最近在学习Keras,要使用到LeCun大神的MNIST手写数字数据集,直接从官网上下载了4个压缩包: MNIST数据集 解压后发现里面每个压缩包里有一个idx-ubyte文件,没有图片文件在里 ...
- python中idx是什么意思_使用Python解析MNIST数据集(IDX文件格式)
前言 最近在学习Keras,要使用到LeCun大神的MNIST手写数字数据集,直接从官网上下载了4个压缩包: MNIST数据集 解压后发现里面每个压缩包里有一个idx-ubyte文件,没有图片文件在里 ...
- 使用Python解析MNIST数据集(IDX格式文件)
代码参考链接 mnist数据集idx格式文件: t10k-images-idx3-ubyte.gz:测试集数据 t10k-labels-idx1-ubyte.gz:测试集标签 train-images ...
- python解析MNIST数据集(IDX格式)
下载 地址:http://yann.lecun.com/exdb/mnist/ 解压 如图 上传 使用的是Jupyter Notebook,所以有这一步,其他编辑器自己考虑路径 代码 import o ...
- python 读取 MNIST 数据集,并解析为图片文件
python 读取 MNIST 数据集,并解析为图片文件 MNIST 是 Yann LeCun 收集创建的手写数字识别数据集,训练集有 60,000 张图片,测试集有 10,000 张图片.数据集链接 ...
- 【OCR炼丹】解析CASIA数据集OLHWDB部分Python版完整代码
上一篇记录了HIT-OR3C联机数据的解析代码,由于OLHWDB不同于HIT-OR3C,其在采集联机手写体数据时就没有按照固定size去采集(HIT-OR3C保存的坐标是转换后相对128*128大小画 ...
- python内存管理 变量无需事先声明_关于python本身的内存管理
一.在python中,变量和内存管理的特点 1.变量无需事先声明 2.变量无需指定类型 3.程序员不用关心内存的管理问题 4.变量名会被回收 5.del语句能够直接释放资源 二.内存分配问题 在为变量 ...
最新文章
- GNU make manual 翻译( 一百五十四)
- ArcGIS Server 9.3 beta 体验一 -- 安装
- memsql 落地mysql_MemSQL初体验 - (2)初始化测试环境
- linux密文解密工具,Linux之加密解密工具openssl的用法以及自建CA
- python 线程间通信之Condition, Queue
- 跟我一起学习C++虚函数--第一篇
- 生活中的数学 —— 几何
- 大B与小b的区别(Bps与bps)
- python好玩的代码-好玩的游戏
- isupper函数用法
- Java处理图片和视频文件——视频抽帧与图片压缩
- 天龙八部,数据可视化分析虚竹和童姥居然关系非同一般
- Vue入门学习总结一:Vue定义
- 共码未来 | 盘点 2022 Google 谷歌开发者大会多重亮点!
- 《SRE Google运维解密》散文
- 5G 当自强,根系不能忘
- 【干货】成功解决了无法进入系统的问题
- TIA博途SCL入门学习(二)常用基本控制语句用法和举例
- 微观:心流,宏观:ikigai
- 4.25分享(贪心算法基础)
热门文章
- 边缘计算设备与部署方案
- 严格递增最大连续子段(思维)
- Netty网络编程(三):Channel详解
- 2019年职称计算机考题,2019年职称计算机考试Excel备考试题(一)
- 微信小程序开发之——调查问卷-服务器数据交互(2.2.3)
- win10中有道词典以及部分软件中文显示乱码问题解决方案
- 介绍一个自制PLC的论坛
- 使用Fastdfs上传文件时出现中文乱码。工具类中的this.getClass().getResource(“/“).getPath()获取配置文件的路径时中文乱码。
- jdk-18.0.0.1安装包下载安装教程
- java+springboot+ssm学生实习报告作业评分管理系统