slam学习——对文件夹下的图片进行重命名

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;
}

猜你喜欢

转载自blog.csdn.net/qq_32651847/article/details/111937669