博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SLAM中TUM数据集更改图片名字
阅读量:2139 次
发布时间:2019-04-30

本文共 2942 字,大约阅读时间需要 9 分钟。

最近在跑一个SLAM相关算法的时候遇到一个问题,被广泛测试的TUM数据集如何将以采集时间命名的图片保存为以序号命名的图片。

TUM原始数据:
assciations.txt、rgb文件、depth文件是原始数据在这里插入图片描述

在这里插入图片描述

处理之后的TUM数据:
assciations1.txt、rgb1文件、depth1文件是处理之后的数据
在这里插入图片描述
在这里插入图片描述

#include
#include
#include
#include
#include
using namespace std;void SplitString(const string& s, vector
& v, const string& c){ string::size_type pos1, pos2; pos2 = s.find(c); pos1 = 0; while (string::npos != pos2) { v.push_back(s.substr(pos1, pos2 - pos1)); pos1 = pos2 + c.size(); pos2 = s.find(c, pos1); } if (pos1 != s.length()) v.push_back(s.substr(pos1));}void Rgb_Save(int Num, string Rgbdir){ //保存输入图像文件名和输出图像文件名 const char* InImgName; const char* OutImgName; //图像数据长度 int length; //文件指针 FILE* fp; InImgName = Rgbdir.data(); //以二进制方式打开图像 if ((fp = fopen(InImgName, "rb")) == NULL) { cout << "Open image failed!" << endl; exit(0); } //获取图像数据总长度 fseek(fp, 0, SEEK_END); length = ftell(fp); rewind(fp); //根据图像数据长度分配内存buffer char* ImgBuffer = (char*)malloc(length * sizeof(char)); //将图像数据读入buffer fread(ImgBuffer, length, 1, fp); fclose(fp); string aa = "G:/Code_Repository_lichenwgei/rgbd_dataset_freiburg1_xyz/rgb1/" + to_string(Num) + ".png"; OutImgName = aa.data(); //以二进制写入方式 if ((fp = fopen(OutImgName, "wb")) == NULL) { cout << "Open File failed!" << endl; exit(0); } //从buffer中写数据到fp指向的文件中 fwrite(ImgBuffer, length, 1, fp); cout << "Done! Rgb_Save"+Num << endl; //关闭文件指针,释放buffer内存 fclose(fp); free(ImgBuffer);}void Depth_Save(int Num, string Depthdir){ //保存输入图像文件名和输出图像文件名 const char* InImgName; const char* OutImgName; //图像数据长度 int length; //文件指针 FILE* fp; InImgName = Depthdir.data(); //以二进制方式打开图像 if ((fp = fopen(InImgName, "rb")) == NULL) { cout << "Open image failed!" << endl; exit(0); } //获取图像数据总长度 fseek(fp, 0, SEEK_END); length = ftell(fp); rewind(fp); //根据图像数据长度分配内存buffer char* ImgBuffer = (char*)malloc(length * sizeof(char)); //将图像数据读入buffer fread(ImgBuffer, length, 1, fp); fclose(fp); string aa = "G:/Code_Repository_lichenwgei/rgbd_dataset_freiburg1_xyz/depth1/" + to_string(Num) + ".png"; OutImgName = aa.data(); //以二进制写入方式 if ((fp = fopen(OutImgName, "wb")) == NULL) { cout << "Open File failed!" << endl; exit(0); } //从buffer中写数据到fp指向的文件中 fwrite(ImgBuffer, length, 1, fp); cout << "Done! Depth_Save"+Num << endl; //关闭文件指针,释放buffer内存 fclose(fp); free(ImgBuffer);}int main(){ ifstream myfile("G:/Code_Repository_lichenwgei/rgbd_dataset_freiburg1_xyz/associations.txt"); string line; string Rgbdir; string Depthdir; vector
v; int Num=100000; while (getline(myfile, line)) { SplitString(line, v, " "); //cout << v[0] << endl; Rgbdir = "G:/Code_Repository_lichenwgei/rgbd_dataset_freiburg1_xyz/" + v[1]; Depthdir = "G:/Code_Repository_lichenwgei/rgbd_dataset_freiburg1_xyz/" + v[3]; Rgb_Save(Num,Rgbdir); Depth_Save(Num, Depthdir); v.clear();//清除所有元素 vector
(v).swap(v);//清除vector内存 Num++; }; ofstream outfile("G:/Code_Repository_lichenwgei/rgbd_dataset_freiburg1_xyz/result.txt"); return 0;}

转载地址:http://wupgf.baihongyu.com/

你可能感兴趣的文章
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
机器学习算法应用中常用技巧-2
查看>>
通过一个kaggle实例学习解决机器学习问题
查看>>
决策树的python实现
查看>>
Sklearn 快速入门
查看>>
了解 Sklearn 的数据集
查看>>
用ARIMA模型做需求预测
查看>>
推荐系统
查看>>
TensorFlow-11-策略网络
查看>>
浅谈 GBDT
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>
seq2seq 的 keras 实现
查看>>
seq2seq 入门
查看>>
什么是 Dropout
查看>>
用 LSTM 做时间序列预测的一个小例子
查看>>
用 LSTM 来做一个分类小问题
查看>>