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

本文介绍了一种使用C++编程语言从指定文件夹中读取所有图片文件路径的方法,适用于车牌识别(LPR)项目的样本数据准备。通过 dirent.h 头文件中的 dirent 结构体,可以获取文件夹内所有文件的详细信息,并将图片文件路径存储到 vector 容器中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为最近在做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.程序附录

#include <dirent.h>
#include <stdio.h>
#include<iostream>
#include<vector>
using namespace std;
vector <string> findfile(string path);
int main(int argc, char *argv[])
{
    vector<string> Filename = findfile("charSamples/1/");
}
vector <string> findfile(string path)
{
    DIR *dp;
    struct dirent *dirp;
    vector<std::string> filename;
    if( (dp=opendir(path.c_str()) )==NULL )
        perror("open dir error");
    while( (dirp=readdir(dp) )!=NULL )
    filename.push_back(path + string(dirp->d_name));
    for (int i = 2;i<filename.size();i++)
        cout<<i<<":"<<filename[i]<<endl;
    closedir(dp);
    return filename;
}


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

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值