关闭

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

596人阅读 评论(0) 收藏 举报
分类:


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

根据输入的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;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:48123次
    • 积分:925
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:48篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论