C++获取目录下的文件列表

有时候会遇到得到路径下的文件列表,然后用imread顺序读取文件,把该代码片段备份一下。

例如在/data/chw/0506/pic_test路径下有下列文件

 其中list为用Python脚本生成的文件列表,python脚本如下,

import os

base_dir = "/data/chw/0506/pic_test"
file_data1 = []
with open("list.txt", "w") as f:
    for file_name in os.listdir("./pic_test"):
        file_data1.append(file_name)
    #file_data1 = file_data1.sort() #error
    data1 = ""
    for temp in sorted(file_data1):
        data1 =  data1 + os.path.join(base_dir, temp) + "\n"
    f.write(data1)

生成的list.txt内容如下

 下面把该目录下面的文件读取到一个vector中,代码如下

int file2list(const char *imageLists, std::vector<std::string> &lists)
{
    lists.clear();
    std::ifstream file;
    file.open(imageLists);
    char str[200];
    int num=0;
    while(!file.eof())
    {
        memset(str,0,200);
        file.getline(str,200);
        lists.push_back(std::string(str));
        num++;
    }
    return num;
}


std::vector<std::string> images;
string listf = “"./pic_test/list.txt"”;
const char *imagesList = listf.c_str();    
file2list(imagesList, images);
cout<<"检测几张图片"<<images.size()<<endl;
for(int i=0; i<images.size()-1; i++)
{
    string pic_name=images[i];  
    cv::Mat img=cv::imread(pic_name);
    ......
}

猜你喜欢

转载自www.cnblogs.com/cumtchw/p/13395188.html