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();
}
相关文章
|
3月前
|
Python
Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv
本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。
37 1
文件copy模块shutil
文件copy模块shutil
|
5月前
|
Unix Python
python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用
python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用
71 0
|
Java
遍历目录文件
遍历目录文件
61 0
C#遍历文件夹
C#遍历文件夹
134 0
|
Java Windows
遍历文件夹
遍历文件夹
130 0
glob库:文件名的匹配
glob库:文件名的匹配
187 2
glob库:文件名的匹配
|
移动开发 缓存 Java
FileUtils分割读取txt文件
FileUtils分割读取txt文件
|
存储 算法 Java
详解PNG文件结构
详解PNG文件结构
649 0
详解PNG文件结构