有时候会遇到得到路径下的文件列表,然后用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) + " " 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); ...... }