格式化图片命名

笔记

// 题目:将文件夹/rgb下以时间命名的序列图片重新命名为0000-9999的格式。

#include <iostream>
#include <vector>
#include <filesystem>
#include <opencv4/opencv2/core.hpp>
#include <opencv4/opencv2/imgcodecs.hpp>
#include <opencv4/opencv2/core/utility.hpp>

using namespace std;
using namespace cv;

// 下载使用的数据集:https://vision.in.tum.de/rgbd/dataset/freiburg1/rgbd_dataset_freiburg1_desk.tgz

int main(int argc, char** argv) {
  // 获取路径
  string dataPath = argv[1];
  dataPath += "/";
  // 获取路径下所有文件名
  vector<string> imageNames;
  glob(dataPath, imageNames, false);

  // 输出图片数量
  cout << "The num of iamge :" << imageNames.size() << endl;

  for (int num = 0; num < imageNames.size(); num++) {
    // 读取图片
    Mat imageMat = imread(imageNames[num], IMREAD_UNCHANGED);
    // 判断是否读取成功
    if (imageMat.empty())
      cout << "Can't open color image!" << imageNames[num] << endl;

    // 创建图片存储文件夹
    string colorIndex = dataPath + "../rgb_copy/";
    // 使用C++17 STL
    filesystem::create_directory(colorIndex);
    // 保存图片
    imwrite(colorIndex + to_string(num) + ".png", imageMat);

    // 打印进程
    num++;
    cout << "\r[ processing frame " << to_string(num) << " ] ";
  }

  cout << "\nAll done." << endl;

  return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容