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
随机推荐
- liunx tar 详解
tar [-cxtzjvfpPN] 文件与目录 .... 参数说明 -c: 建立一个压缩文件的指令参数 (crate的缩写): -x:解开一个压缩文件的参数指令: -t:查看tarfile里面的文件 ...
- Android启动过程_大致流程
Android大致启动过程如图(基于O版本 使用draw.io画的). 注:这是通过查询结合自己了解的,还有不少不明确的,后续有进展完善,欢迎指正. 说明:绿色是主要几个的阶段.其他围绕这几个阶段的 ...
- [256个管理学理论]005.羊群效应(Herd Behavior)
羊群效应(Herd Behavior) 来自于大洋彼岸的让你看不懂的解释: “羊群效应”,也叫“从众效应”,是个人的观念或行为由于真实的或想像的群体的影响或压力,而向与多数人相一致的方向变化的现象.表 ...
- python 验证码处理
一. 灰度处理,就是把彩色的验证码图片转为灰色的图片. 二值化,是将图片处理为只有黑白两色的图片,利于后面的图像处理和识别 # 自适应阀值二值化 def _get_dynamic_binary_ima ...
- win上的python
#启用浏览器,最大化窗口 #coding = utf-8 from selenium import webdriver class MyClass(object): ''' classdocs ''' ...
- Rocket - util - Annotations
https://mp.weixin.qq.com/s/7C8ZmPpwAqFqyKjL9K40Fg 介绍util中定义的注解(Annotations). 1. Annotation ...
- zookeeper面试题分析
1.什么是zookeeper? 1.zookeeper是一个分布式协调技术,是分布式数据一致性解决方案的典型代表,力求做到强一致性但最终实现的是最终一致性,采用CAP理论的AP,用来构建高可用分布式主 ...
- Java实现 蓝桥杯 算法提高VIP 摆花 dp 记忆搜索 2种做法 多重背包
题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...
- Java实现 蓝桥杯 算法训练 乘法次数
乘法次数 资源限制 时间限制:1.0s 内存限制:999.4MB 问题描述 给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘.如24:22=22(第一次乘),2 ...
- Java实现 LeetCode 24 两两交换链表中的节点
24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3-&g ...