QT交通标识牌测试数据集分类整理


交通标识牌测试数据集分类整理

根据输入的ground truth文件,将图片分类到对应类的文件夹下面

采用了QT 

#include 
#include 
#include 
#include 
#include 

#include 

// 根据groundtruth 文件,将测试数据按文件夹分类存储

//GT-final_test.csv
int DispatchImageByCvs(char* groudTruthFilename,char* imagePath,char* outPath)
{
	//第一步读取ground truth文件到数组
	QFile file(groudTruthFilename);
	//QFile file("./GT-final_test.csv");

	if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
		return -1;

	QTextStream stream(&file);

	QVector> resutVec;

	QString line;
	// 读取头,丢弃
	stream.readLine();
	// 读取数据部分
	do {
		line = stream.readLine();

		if (!line.isNull())
		{
			QStringList list = line.split(";");
			QPair one;
			one.first = list[0];
			one.second = list[7];
			resutVec.push_back(one);
		}
	} while (!line.isNull());
	
	//创建目录,并分类存取文件

	QDir rootPath(imagePath);
	if (!rootPath.exists())
		return -2;

	QDir _outPath(outPath);
	if (!_outPath.exists())
	{
		/*bool ret = _outPath.mkdir(outPath);
		if (ret ==false)
		{*/
			qDebug() << "create out path error";
			return -3;
	/*	}*/
	}

	for (int i = 0; i < resutVec.size();i++)
	{
		QString filename = resutVec[i].first;
		QString label = resutVec[i].second;

		//
		QString subFullDir = QString(outPath) + "/" + label;
		QDir subdir(subFullDir);
		if (!subdir.exists())
		{
			_outPath.mkdir(label);
		}

		//
		QString source = QString(imagePath) + "/" + filename;
		QFile sourceFile(source);

		QString dst = subFullDir + "/" + filename;


		if (!sourceFile.exists())
		{
			continue;
		}

		QFile::copy(source,dst);

	}

	
	return 0;
}


你可能感兴趣的:(C++,QT)