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


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

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

采用了QT 

#include <QFile>
#include <QTextStream>
#include <QPair>
#include <QVector>
#include <QDir>

#include <QtDebug>

// 根据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<QPair<QString,QString>> resutVec;

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

		if (!line.isNull())
		{
			QStringList list = line.split(";");
			QPair<QString, QString> 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;
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bhj5787/article/details/46827241
个人分类: C++ QT
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭