glob遍历文件夹下的所有图片

简介: glob遍历文件夹下的所有图片

void glob(String pattern, std::vector<String>& result, bool recursive = false);


当recursive为false时,仅仅遍历指定文件夹内符合模式的文件,当recursive为true时,会同时遍历指定文件夹的子文件夹。


由于glob遍历图像名称不是按顺序进行遍历的;在读取图像序列的时候经常要按顺序读取,如在多目标跟踪中;这时可以sort进行排序;


#include<iostream>
#include<vector>
#include<opencv2/opencv.hpp>
#include<string>
using namespace std;
using namespace cv;
//自定义排序函数  
bool sortFun(const cv::Point2d &p1, const cv::Point2d &p2)
{
  return p1.x < p2.x;//升序排列  
}
void main() {
  vector<String> imgFiles;
  vector<string> imgNames_;
  string imgsDir = "C:\\Users\\23913\\Desktop\\bottle_test_data\\JPEGImages";
  string pattern = imgsDir + "/" + string("*.jpg");
  glob(imgsDir, imgFiles, false);
  size_t count = imgFiles.size();
  if (count == 0) {
  cout << "this dir has no jpg!" << endl;
  return;
  }
  cout << "the num of jpgs:" << count << endl;
  for (int i = 0; i < count; i++) {
  //获取不带路径的文件名字
  size_t pos = imgFiles[i].find_last_of("/") + 1;
  string imgName = imgFiles[i].substr(pos, imgFiles[i].length() - pos);
  cout << imgName << endl;
  //获取不带后缀名的文件名
  string imgName_ = imgName.substr(0, imgName.rfind("."));
  imgNames_.emplace_back(imgName_);
  }
  sort(imgNames_.begin(), imgNames_.end(), [](string a, string b) {return stoi(a) < stoi(b); });
  for (int i = 0; i < imgNames_.size(); i++) {
  cout << imgNames_[i] << endl;
  }
  getchar();
}
相关文章
|
4月前
|
人工智能 Python
超级好用的Python模块——glob模块
超级好用的Python模块——glob模块
35 0
文件copy模块shutil
文件copy模块shutil
|
Java
遍历目录文件
遍历目录文件
68 0
C#遍历文件夹
C#遍历文件夹
152 0
|
Java Windows
遍历文件夹
遍历文件夹
154 0
glob库:文件名的匹配
glob库:文件名的匹配
197 2
glob库:文件名的匹配
|
移动开发 缓存 Java
FileUtils分割读取txt文件
FileUtils分割读取txt文件
Python模块——shutil模块详解
Python模块——shutil模块详解
Python模块——shutil模块详解
|
Python
Python 技术篇-不使用os模块遍历文件夹,pathlib库获取直接下级文件和所有下级文件
Python 技术篇-不使用os模块遍历文件夹,pathlib库获取直接下级文件和所有下级文件
359 0
Python 技术篇-不使用os模块遍历文件夹,pathlib库获取直接下级文件和所有下级文件

热门文章

最新文章