C++ Opencv 读取指定路径中的所有文件(图片)及指定路径中指定格式的所有文件(图片)

读取指令路径下的所有文件,程序如下:

#include <io.h>
#include < fstream>
#include < string>
#include <vector>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

//读入指定文件夹下的所有文件
void getFiles(string path, vector<string>& files)
{
	intptr_t   hFile = 0;//intptr_t和uintptr_t是什么类型:typedef long int/ typedef unsigned long int
	struct _finddata_t fileinfo;
	string p;
	if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)//assign方法可以理解为先将原字符串清空,然后赋予新的值作替换。
	{
		do
		{
			if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
                        //这句有点不明白,如果不加,识别的文件里就有.和..两个文件,哪位大神可以给解释下?感激不尽!!!
			{
				files.push_back(p.assign(path).append("\\").append(fileinfo.name));
			}
			
		}while (_findnext(hFile, &fileinfo) == 0);
		_findclose(hFile);
	}
}
//调用
int main()
{
	string filePath = "E:\\IME\\"; //正样本路径
	vector<string> files;
	getFiles(filePath, files);
	int number = files.size();//文件数量
	for (int i = 0; i < number; i++)
	{
		Mat img = imread(files[i]);
	}

}

运行结果如下

读取文件夹下指定格式的所有文件,本程序是读取文件夹下所有jpg图片

#include <io.h>
#include < fstream>
#include < string>
#include <vector>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

//读入文件夹下指定格式的所有文件,本程序是读取文件夹下所有jpg图片
void getFiles(string path, string file_format, vector<string>& files)
{
	intptr_t   hFile = 0;//intptr_t和uintptr_t是什么类型:typedef long int/ typedef unsigned long int
	struct _finddata_t fileinfo;
	string p, file_formatName;
	if (0 != strcmp(file_format.c_str(), ""))
	{
		file_formatName = "\\*." + file_format;
	}
	else
	{
		file_formatName = "\\*";
	}
	if ((hFile = _findfirst(p.assign(path).append(file_formatName).c_str(), &fileinfo)) != -1)//assign方法可以理解为先将原字符串清空,然后赋予新的值作替换。
	{
		do
		{
			files.push_back(p.assign(path).append("\\").append(fileinfo.name));
		}while (_findnext(hFile, &fileinfo) == 0);
		_findclose(hFile);
	}
}
//调用
int main()
{
	string filePath = "E:\\IME\\Job\\Test Images\\im_raw\\"; //正样本路径
	vector<string> files;
	string file_format = "jpg";
	getFiles(filePath, file_format, files);
	int number = files.size();//文件数量
	for (int i = 0; i < number; i++)
	{
		Mat img = imread(files[i]);
	}

}

运行结果如下

猜你喜欢

转载自blog.csdn.net/duiwangxiaomi/article/details/88911917