算法
-
使用cv::glob函数将path下所有文件名称存到filenames中
void cv::glob ( String pattern,
std::vector< String > & result,
bool recursive = false //递归
) -
定义一个图像矩阵src,将原路径下图像逐张赋值给src
-
使用sprintf为每张图像重命名,根据i命名,赋给Rename
-
使用imwrite保存地址和图像名称
代码
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main() {
char Rename[50]; //图像重命名的名称
cv::Mat src;
cv::String path = "/home/automobile/wcm/database/TUMData/rgbd_datase_freiburg1_rpy/rgbd_dataset_freiburg1_rpy/rgb+part";
cv::String dest = "/home/automobile/wcm/database/TUMData/rgbd_rename/" ;
cv::String savedfilename;
std::vector<cv::String> filenames;
cv::glob(path, filenames, false);
//判断文件夹是否为空
if (filenames.size() == 0){
cout << "No image files " << endl;
}
//将每副图像赋值给定义的src,并重命名
for (int i = 0; i < filenames.size(); i++){
//图像赋值,浅拷贝
src = cv::imread(filenames[i], CV_LOAD_IMAGE_UNCHANGED);
//Rename为每幅图像的重命名
sprintf(Rename, "%05d.png", i );
//将重命名的图像写入特定文件夹
cv::imwrite(dest+ Rename , src);
cout << "重命名图像路径为 : " << dest + Rename << endl;
}
std::cout << "All done :)! Hello, World!" << std::endl;
return 0;
}