手机视频制作TUM格式数据集(ORB-SLAM2测试)
Mr Qin
分类:建图导航
个人专栏:动态SLAM 发布时间 2022.01.04阅读数 7234 评论数 2
1.简介
本文使用手机采集视频数据,制作TUM通用格式的数据集,并用ORB-SLAM2系统运行测试了该数据。需要注意的是,由于无法获得手机相机的真实轨迹,故所制作数据集不包含Groundtruth.txt。将录制好的视频制作成数据集的格式调用,也可以:1.调用ROS接口获取电脑相机的图像topic话题实时运行(需要安装相机的ROS驱动);2.直接用opencv调用电脑相机实时运行(需要在主函数mono_tum.cc中做相应修改);3.用opencv获取mp4视频中的图像数据运行(需要在主函数mono_tum.cc中做相应修改)。 相关链接: TUM数据集格式介绍: https://www.guyuehome.com/35828 rosbag数据集转TUM格式: https://www.guyuehome.com/35920 ROS下使用电脑相机运行ORB-SLAM2: https://blog.csdn.net/qinqinxiansheng/article/details/107079265 opencv调用相机运行ORB-SLAM2: https://blog.csdn.net/zhangqian_shai/article/details/88406981
2.TUM数据集制作
首先用手机相机录制一段视频,用下列C++程序将mp4视频转换成TUM数据集的格式,以供ORB-SLAM2调用。之前的博文 https://www.guyuehome.com/35828 已经介绍了TUM数据集的格式,我们需要提取视频中的图片,以其时间戳命名并保存图片,最后将图像的路径记录在rgb.txt文件中。 该程序和之前博文有些类似https://www.guyuehome.com/35920 。程序中首先加载了mp4格式的手机视频,然后获取了图像的尺寸信息;然后对于每一帧图像,获取图像拍摄的时间信息,以其作为名称将图像保存,并将图像的路径保存在rgb.txt文件中。
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
Mat frame;
double time;
int width, high;
VideoCapture capture("test.mp4");//录制的视频,注意文件的路径
//获取图像的尺寸
width = capture.get(CV_CAP_PROP_FRAME_WIDTH);
high = capture.get(CV_CAP_PROP_FRAME_HEIGHT);
cout
分享
微信
微博
QQ
图片
上一篇:【动态SLAM】TUM动态数据集介绍及讨论 下一篇:自适应RANSAC原理介绍
|