slam学习——对文件夹下的图片进行重命名
计算机视觉life知识星球第一张的作业:就是对一个文件夹下的图片进行批量的重命名,存储在另外的文件夹下面。
argv[1]是原来图片存在的文件夹,new_folder_path是新存储的文件夹
image_new_name是图片新的名字
#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>
#include <string>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
int main1(int argc,char* argv[]){
argv[1] = "/home/wl/wlcarry/slam/task/homework1/rgbd_dataset_freiburg1_desk/rgb";
std::string folder_path = argv[1];
std::string data_path = folder_path + "/";
std::vector<cv::String> image_names;
cv::glob(data_path,image_names, false);
std::string new_folder_path = "/home/wl/wlcarry/slam/task/homework1/rgbd_dataset_freiburg1_desk/rgb/index";
int flag_is_exist_folder = access(new_folder_path.c_str(),0);
if(flag_is_exist_folder == 0){
std::cout << "该文件夹已经存在" <<std::endl;
}
else{
int flag_create_folder = mkdir(new_folder_path.c_str(),S_IRWXU);
if (flag_create_folder == 0){
std::cout << "成功创建了文件夹" << std::endl;
}
}
for(int i =0; i<image_names.size();i++){
cv::Mat colormap = cv::imread(image_names[i]);
if(colormap.empty()){
std::cout << "cant open the image"<< image_names[i] << std::endl;
}
std::stringstream ss;
ss<<std::setw(4)<<std::setfill('0')<<i<<".png";
std::string image_new_name = ss.str();
cv::imwrite(new_folder_path + "/" + image_new_name,colormap);
}
std::cout<< "all images done" << std::endl;
return 0;
}