SLAM数据集序列图片如何批量处理
SLAM数据集序列图片如何批量处理
原创:SLAM爬坑之行
引言:在SLAM学习过程中,有时候需要对大量的数据集比如TUM/KITTI等图片序列进行批量处理,这个时候需要用到opencv中的函数对图像进行批量处理的话,会大大减少我们的时间,提高工作效率。
详细流程:
1、数据集下对大批量图片文件名的导出
我们采用的是TUM实验室中的rgbddatasetfreiburg2pioneerslam的RGB图像序列,每当看见这些密密麻麻的数据图像的时候,就会有一种无力感,所以需要批量处理。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W9k03k7b-1592542839980)(D:\SLAM\SLAM基础\文章\rgbseires.png)]
1、使用ls >命令将目录RGB(根据实际情况进行更改)中的图片名列举出来,然后利用>将文 件名重定向到test.txt中(.txt的名字可根据需要自定义),效果入下图,可以看见rgb中的图像序列已经被保存,终端输入下列指令后结果如下图所示
ls rgb >text.txt
2、利用opencv实现批量图像的处理工作
#include <iostream>
#include<opencv2/opencv.hpp>
#include<iostream>
#include<time.h>
#include<fstream>
#include<string>
int main(){
//! 指定文件夹路径
std::string path = "C:\\Users\\12692\\Source\\Repos\\picture_process\\seires.txt";
std::ifstream file(path);
int img_index = 0;
char img_infile[100], img_savefile[100];
//!函数file.eof(),如果没到文件末尾,返回值为0;当读取两百个图像时,停止读取
while (!file.eof() && img_index < 200) {
//图像名称
char img_name[500];
//getline()读取一行,内容存放在img_name[0],读取的最大字节数为500
file.getline(img_name, 500);
//将字符串img_name标准化打印到img_infile中
sprintf_s(img_infile, "../rgb/%s", img_name);
sprintf_s(img_savefile, "../save/tum%03d.png", img_index);
cv::Mat src = cv::imread(img_infile);
cv::Mat imgGray;
//将彩色图像处理成灰度图
cvtColor(src, imgGray, CV_BGR2GRAY);
img_index++;
//写入序列图片
cv::imwrite(img_savefile, imgGray);
}
}
下图是处理后的图像,这样就可以我们就可以看见原文件rgb中的200张彩色图像被批量处理成灰度图并且重命名。
3、常用举例按规律读取并显示
数据集命名规则如下所示,下列程序将按照序列号名称顺序读取
#include<opencv2/core/core.hpp>
#include<stdio.h>
#include<stdlib.h>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
#include <fstream>
using namespace std;
using namespace cv;
int main() {
//先读取100张图试试看
for(int i = 1 ; i < 100; i++) {
//使用SetFileNames()方法读取序列图像。
Mat srcGray;
char img_name[200];
sprintf(img_name, "../PATH/TUM%03d.jpg", i);//%05d代表文件名的宽度
srcGray = imread(imgname, 0);
cout << i << endl;
imshow("读取", srcGray);
waitKey(122);
}
return 0;
}
4、写入序列图片
char path[200];
sprintf(path, "../save/%d.jpg", i);
Mat edgeMat;
imwrite(path, edgeMat);
SLAM数据集序列图片如何批量处理的更多相关文章
- php base64数据与图片的转换
1.解析base64数据成图片 The problem is that data:image/bmp;base64, is included in the encoded contents. This ...
- PLSQL程序编写杂烦数据表信息编写批量排版
--PLSQL程序编写杂烦数据表信息编写批量排版 SELECT 'cra.' || lower(t.column_name) ||',' FROM dba_tab_columns t WHERE t. ...
- Python3.7 练习题(三) 将指定目录下的图片进行批量尺寸大小处理
# 将指定目录下的图片进行批量尺寸大小处理 #修改图片尺寸 导入Image os 快捷键 alt+enter import os from PIL import Image def process_i ...
- PHP base64数据与图片的互相转换
1.解析base64数据成图片 The problem is that data:image/bmp;base64, is included in the encoded contents. This ...
- C++ 根据图片url 批量 下载图片
最近需要用到根据图片URL批量下载到本地的操作.查找了相关资料,记录在这儿. 1.首先在CSV文件中提取出url ifstream fin("C:\\Users\\lenovo\\Deskt ...
- 使用FormData数据做图片上传: new FormData() canvas实现图片压缩
使用FormData数据做图片上传: new FormData() canvas实现图片压缩 ps: 千万要使用append不要用set 苹果ios有兼容问题导致数据获取不到,需要后台 ...
- ASP.NET MVC中使用Dropzone.js实现图片的批量拖拽上传
说在前面 最近在做一个MVC相册的网站(这里),需要批量上传照片功能,所以就在网上搜相关的插件,偶然机会发现Dropzone.js,试用了一下完全符合我的要求,而且样式挺满意的,于是就在我的项目中使用 ...
- 图片尺寸批量resize的matlab并行代码
在caffe ImageNet例子中有对图片进行resize的部分,文中使用的是linux shell脚本命令: for name in /path/to/imagenet/val/*.JPEG; d ...
- PLSQL_数据泵定参数批量导入多表Expdp/Impdp Parfile(案例)
2015-04-01 Created By BaoXinjian
随机推荐
- Docker的iptables规则在iptables重启后丢失
前因后果 1.在跳板机上使用ansible命令测试机器B时,报错如下,于是就怀疑是网络防火墙的问题 10.10.0.86 | FAILED >> { "failed": ...
- windows+vs2017+C语言 引入mysql.h对MYSQL数据库的操作
mysql.h文件用作VS开发用,用来连接数据库.没有mysql.h文件,就无法调用mysql的东西 也无法用C语言对MYSQL操作. 一般安装了mysql之后,这个文件就在mysql目录的inclu ...
- mysql去重复关键字distinct的用法
distinct的去重复的提前是表中所有列的数据完成相同时,才能把相同的数据只保留一条,并不是 distinct 列名,除去某一列相同的数据,并且 distinct要放在第一个列前面.案例如下:一个学 ...
- windows文本转语音 通过java 调用python 生成exe可执行文件一条龙
我已记不清 我失败过多少次 ,找过多少资料 ,但是功夫不负有心人 ,还是成功了. 所有资料和需要的语音模块的资料以放置在文章末尾, 有些是引用别人的博客的部分内容, 原文是在有道云笔记,所以没有图,请 ...
- STM32与匿名上位机通信——使用串口DMA实现
背景:匿名上位机功能强大,这里想要采用匿名上位机输出一些调试信息,以波形的形式显示,方便观察和调试. 平台: 硬件:STM32F405RGT6 通信:2.4G zigbee无线串口收发模块 CC253 ...
- 基于S7-PLCSIM Advanced搭建S7通信仿真环境
写在前面: 之前有专门讲过一期如何搭建西门子PLC的S7通信仿真环境,感兴趣的可以点击查看:戳↓ 1.基于TIA搭建西门子PLC仿真环境及通信方案-联合出品 2.手把手教你搭建西门子PLC仿真环境 那 ...
- Alpha总结展望——前事不忘后事之师
这个作业属于哪个课程 软件工程 这个作业要求在哪里 Alpha总结展望--前事不忘后事之师 这个作业的目标 Alpha总结展望 作业正文 正文 其他参考文献 无 一.个人感想总结 吴秋悦: 对Alph ...
- 非阻塞赋值(Non-blocking Assignment)是个伪需求
https://mp.weixin.qq.com/s/mH84421WDGRb7cuU5FEFIQ Verilog的赋值很是复杂,包括: 1. Continuous assignment; 2. Pr ...
- Java实现 LeetCode 783 二叉搜索树节点最小距离(遍历)
783. 二叉搜索树节点最小距离 给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值. 示例: 输入: root = [4,2,6,1,3,null,null] 输出: 1 解释: ...
- Java实现 洛谷 多项式输出
题目描述 一元nn次多项式可用如下的表达式表示: 其中,a_ix^ia i x i 称为ii次项,a_ia i 称为ii次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求 ...