rosbag数据记录及转换图片、视频
博客转载自: https://blog.csdn.net/u012706484/article/details/78495896
rosbag常见的使用参数和配置
1.查看.bag中包含的信息 : rosbag info
2.0回放.bag中包含的信息: rosbag play
2.1以某一频率发布消息 : rosbag play -r 2
2.2从某一时间节点开始发布消息 : rosbag play -s 2
3.1记录所有topic信息: rosbag record -a
3.2记录部分信息 : rosbag record -o subset /turtle1/cmd_vel /turtle1/pose 生成subset.bag的文件,记录的是 /turtle1/cmd_vel和/turtle1/pose两个信息
不确定需要记录消息的名称的话,可以查看所有的信息
rostopic list -v
4.需要将.bag记录的图像数据输出为图片或视频时候,首先创建文件 export.luach 并写入以下内容
<launch>
<node pkg="rosbag" type="play" name="rosbag" args="-d 2 $(find image_view)/test.bag"/>
<node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
<remap from="image" to="/camera/image_raw"/>
</node>
</launch>
代码解析
$(find image_view)/test.bag" 其中image_view表示package名字,此处改为你的.bag文件所处的package的名字即可,同时test改为对应的名字。
<remap from="image" to="/camera/image_raw"/> 此处表示需将你记录的topic名字覆盖掉/image 这个原始的topic。
之后运行launch文件
roslaunch export.launch
此时数据将被分离成一组图片,并存在“.ros”文件夹中。
稍后可以创建文件夹 /source ,将/.ros中的图片转移到/source中,即
mv ~/.ros/frame*.jpg source/
最后转换成视频
cd ~/source
jpeg2yuv -I p -f 15 -j frame%04d.jpg -b 1 > tmp.yuv //其中-f 15 表示频率, -b 1 表示起始图片的编号。
如果要产生.ogv文件
ffmpeg2theora --optimize --videoquality 10 --videobitrate 16778 -o output.ogv tmp.yuv
如果要产生mpg文件
mencoder "mf://*.jpg" -mf type=jpg:fps=15 -o output.mpg -speed 1 -ofps 30 -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=2500 -oac copy -of mpeg
在本步骤中可能会需要安装部分package,按提示安装即可
sudo apt-get install packeage-name
二、用ros工具从bag文件中提取图片
1). 首先需要安装一些图片处理依赖的包: MJPEG, ffmpeg
$ sudo apt-get install mjepgtools
$ sudo apt-get install ffmpeg
2). 新建文件夹用于储存提取后的图片,并执行:
$ rosrun image_view extract_images _sec_per_frame:=0.01 image:=<IMAGETOPICINBAGFILE> # <IMAGETOPICINBAGFILE>
为bag文件中储存图片的topic
PS:如果输出的图片数量与rosbag info命令查询得到的数量不符,可以减少_sec_per_frame参数的值。
3). 打开另一个终端,导向刚才新建的文件夹,然后执行:
$ rosbag play <BAGFILE> # <BAGFILE>为bag文件的路径
三. 将提取的图片转换成视频
PS:这部分并不涉及ros的操作,可以跳过。这无非就是将图片压成视频,可以用FFMPEG包或者Mencoder包来执行。
1). 首先决定文件的fps。用rosscore info来确认视频的图片数,然后除以持续的时间即可。
#使用mencoder压缩
$ mencoder -nosound mf://*.jpg -mf w=<WIDTH>:h=<HEIGHT>:type=jpg:fps=<FPS> \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=<BITRATE>\
:mbd=2:keyint=132:v4mv:vqmin=3:lumi_mask=0.07:dark_mask=0.2:mpeg_quant:scplx_mask=0.1:tcplx_mask=0.1:naq -o\
<OUTPUT>.avi
# <WIDTH>为图片的宽度,<HEIGHT>为图片的长度。<FPS>就是每秒所需的图片张数。<BITRATE>决定视频的质量,越大越高,一般1800KBits以上就可以。
#使用FFMPEG压缩
ffmpeg -r <FPS> -b <BITRATE> -i frame%04d.jpg <OUTPUT>.avi
四. 提取bag文件中的数据并保存为csv格式
对于非图片数据,大部分情况下都可用csv文件存储。从section 5中我们就可以指导用rostopic echo即可打印topic中的数据。
rostopic echo -b <BAGFILE> -p <TOPIC> > <output>.csv # <BAGFILE>是bag文件,<TOPIC>为数据所在的topic
参考:
1. http://wiki.ros.org/ROS/Tutorials
2. https://coderwall.com/p/qewf6g/how-to-extract-images-from-a-rosbag-file-and-convert-them-to-video
3. http://www.clearpathrobotics.com/guides/ros/Practical%20Example.html
4. http://answers.ros.org/question/9102/how-to-extract-data-from-bag
rosbag数据记录及转换图片、视频的更多相关文章
- Azure IoT Hub 十分钟入门系列 (3)- 使用消息路由将原始设备数据记录存档
本文主要分享一个案例: 10分钟使用消息路由将原始设备数据记录存档 B站视频讲解:https://www.bilibili.com/video/av90223893/ 本文主要有如下内容: 1.理解什 ...
- 【小工具系列】Python + OpenCV 图片序列转换成视频
图片序列转换成视频 最近一直在找一个工具,能够将一堆图片转化成视频.网上找了一些小软件,还有 win10 的照片自带的视频制作功能,都不是很满意. 又不想下载那些专业的视频剪辑软件大材小用. 然后找到 ...
- 神工鬼斧惟肖惟妙,M1 mac系统深度学习框架Pytorch的二次元动漫动画风格迁移滤镜AnimeGANv2+Ffmpeg(图片+视频)快速实践
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_201 前段时间,业界鼎鼎有名的动漫风格转化滤镜库AnimeGAN发布了最新的v2版本,一时间街谈巷议,风头无两.提起二次元,目前国 ...
- java批量转换图片格式
废话不多直接上代码,代码其实也不多.... package com.qiao.testImage; import java.awt.image.BufferedImage; import java.i ...
- 向EXECL文件中导入数据的同时插入图片
因为项目需要在导出数据到EXECL文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下. 首先代码写好之后放测试服务器上去执行的时候报错了,报检索 COM 类工厂中 CLSID 为 {0 ...
- 基于OpenCv和swing的图片/视频展示Java实现
基于OpenCv和swing实现图片/视频的展示 图片的展示 swing展示图片,多为操作BufferedImage,这里要关注的核心是将Mat转为BufferedImage. 代码如下: publi ...
- 如何在数据表中存取图片 - 回复 "三足乌" 的问题
问题来源: http://www.cnblogs.com/del/archive/2009/05/28/1491186.html#1801853 准备工作:1.在空白窗体上添加: ClientData ...
- [转]RGB数据保存为BMP图片
转自:http://blog.csdn.net/yixianfeng41/article/details/52591585 一.BMP文件由文件头.位图信息头.颜色信息和图形数据四部分组成. 1.BM ...
- 使用 Qt 获取 UDP 数据并显示成图片(2)
本文首发于 BriFuture 的 个人博客 在我的前一篇文章 使用 Qt 获取 UDP 数据并显示成图片 中,我讲了如何用 Python 模拟发送数据,如何在 Qt 中高效的接收 UDP 数据包并将 ...
随机推荐
- SSM框架(1)
Spring MVC Framework有这样一些特点: 它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件.并且和Spring提供的其他基础结构紧密集成. 不依 ...
- PS抠图之单色背景图片
PS一直大家比较喜欢的一款图像处理软件,很多朋友对使用基本的功能.最近很多的朋友都在问我关于PS抠图的方法,这些方法也不是一句两句就能说清楚,并且每天都重复的叫他们,不如直接写出来刚刚接触到的朋友一起 ...
- IntelliJ IDEA中使用Git
IntelliJ IDEA下使用Git IntelliJ IDEA下配置Git:git clone.git checkout.git diff.git log.git commit.git push. ...
- java多线程:线程体往外抛出异常的处理机制实践
1当线程的线程体内部无捕获异常,将异常抛出线程体外,不同情况下,程序处理机制 测试类 package com.ehking.bankchannel.domesticremit.facade.impl; ...
- 关于djangoadmin的一个博客
http://www.cnblogs.com/linxiyue/category/569717.html
- Go入门教程
本人录制的Go入门视频 20小时快速入门go语言视频:https://pan.baidu.com/s/1jJPsThk 基础编程 01.Go语言介绍02.环境搭建03.第一个Go程序 04.命名.变量 ...
- tomcat启动报错:org.springframework.beans.factory.BeanCreationException
Web容器在启动时加载 spring 配置文件时解析xml失败常常引起容器启动失败.这次配置文件是 ibatis的sql脚本出了问题: Context initialization failed or ...
- eclipse-连接TFS错误 <the server to respond with a valid http response>解决方法
解决办法 如果普通凭证有多个,则将普通凭证给删除.
- Java [parms/options] range -b 100 -c 10 -i 100 -t 300 -s 180
3 down vote Just run the command java -X and you will get ans of all_ C:\Users\Admin>java -X -Xmi ...
- 杂项:UN-HTML
ylbtech-杂项:HTML 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返回顶部 1 ...