当前位置:   article > 正文

【C++】遍历文件夹下的图片文件,并返回其路径_c++ for 遍历文件夹下的图片

c++ for 遍历文件夹下的图片

因为最近在做LPR(车牌识别)的小项目,需要把图片样本导入并训练,所以写了一个小程序。

在参考了网上部分资料后,得到目标目录charSamples下,文件夹1里所有50个样本图片文件的路径。

------------------------------------------------------------------

1.dirent.h

dirent,LINUX系统下的一个头文件,在这个目录下/usr/include,为了获取某文件夹目录内容,所使用的结构体

引用头文件#include<dirent.h>

struct dirent

{

long d_ino;/* inode number 索引节点号 */
off_t d_off; /* offset to this dirent 在目录文件中的偏移 */
unsigned short d_reclen;/* length of this d_name 文件名长 */
unsigned char d_type;/* the type of d_name 文件类型 */
char d_name [NAME_MAX+1];/* file name (null-terminated) 文件名,最长256字符 */
}

-------------------------------------------------------------------

2.实现过程

这是我保存的图片路径图:


--------------------------------------------------------------------------------------------------------------

执行效果:


-------------------------------------------------------------------------------------------

3.程序附录

  1. #include <dirent.h>
  2. #include <stdio.h>
  3. #include<iostream>
  4. #include<vector>
  5. using namespace std;
  6. vector <string> findfile(string path);
  7. int main(int argc, char *argv[])
  8. {
  9.     vector<string> Filename = findfile("charSamples/1/");
  10. }
  11. vector <string> findfile(string path)
  12. {
  13.     DIR *dp;
  14.     struct dirent *dirp;
  15.     vector<std::string> filename;
  16.     if( (dp=opendir(path.c_str()) )==NULL )
  17.         perror("open dir error");
  18.     while( (dirp=readdir(dp) )!=NULL )
  19.     filename.push_back(path + string(dirp->d_name));
  20.     for (int i = 2;i<filename.size();i++)
  21.         cout<<i<<":"<<filename[i]<<endl;
  22.     closedir(dp);
  23.     return filename;
  24. }


有点疑惑:输出的时候,我是以 I = 2 为起始的,因为 I= 0和1 的时候输出的是一个“.”符号,不知道为什么。

最后,图片文件是这样的,其他文件也应该差不多,大家可以多试试。

------------------------------------------------------------------------

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/281783
推荐阅读
相关标签
  

闽ICP备14008679号