机器学习进行标签数据提取过程中,手工一个个加注标签较为麻烦,此时可以采用程序处理这种复杂重复的事情。
1:首先使用一个bat脚本获取文件名,脚本编辑:dir /b >list.txt 或者 dir *.jpg /b >list.txt
最终按行获取图像的名称,例如:
02512068.jpg
0S6152046-0 0.jpg
101TYC4_0.png
1266964-z.jpg
130b3c1b23ed94470d507af824d1e420.png
1329670819_7xKrKj.jpg
1352687617249.jpg
138398529.jpg
180202l6xtnngfjj8sxg0t.jpg
1837_20120925135308.jpg
20122182271426826.jpg
.........
2 在名称后加空格并加标签0
#include<opencv2\opencv.hpp>
#include<iostream>
#include<string>
#include<vector>
#include<fstream>
#include<opencv2/ml/ml.hpp>
using namespace std;
using namespace cv;
using namespace ml;
int main()
{
//https://blog.csdn.net/qing101hua/article/details/78564201
ifstream f1("new.txt");
string s;
vector<string>v;
while (getline(f1, s)) {
//char num[15] = { 0 };
//strncpy(num, s+(strlen(s) - 2), 1);
string ss;
ss = s + " 0";
v.push_back(ss);
}
for (vector<string>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << endl;
}
vector<int>vv(v.size(), 0);
cout << vv.size();
Mat m1 = Mat::zeros(vv.size() - 1, 1, CV_8UC1);
for (int i = 0; i < m1.rows; i++) {
for (int j = 0; j < m1.cols; j++) {
m1.at<uchar>(i, j) = vv[i];
}
}
imshow("aa", m1);
//imshow("aa", image[0]);//显示第一张图片
waitKey();
getchar();
return 0;
}
3.最终运行结果如下: