话不多说,直接上代码,有问题请留言
clc;clear;close;
%% 生成txt格式的图像分类标签
path='D:\人工智能\图像识别数据\';
folders=dir(path);% dir是direcory的缩写,是目录的意思,返回的folders是结构体,包含所有的目录和两个特殊的目录,一个是“.”,代表该文件夹本身,还有一个是“..”,代表该文件夹的上一层文件夹
fid_train=fopen('D:\人工智能\图像识别数据\train.txt','wt');
fid_test=fopen('D:\人工智能\图像识别数据\test.txt','wt');
num_folders=numel(folders);
for i=3:num_folders
folders_name=folders(i).name;
files=dir([path folders_name '\*.jpg']);% 仅列出里面jpg格式的文件
x=numel(files);
y=randperm(x);% 打乱图像的顺序
for j=1:x
if j<=390
fprintf(fid_train,'%s %s\n',['\' folders(i).name '\' files(y(j)).name],folders_name);% 在train.txt里面写入目录及标签
else
fprintf(fid_test,'%s %s\n',['\' folders(i).name '\' files(y(j)).name],folders_name);% 在test.txt里面写入目录及标签
end
end
end
fclose(fid_train);
fclose(fid_test);
效果如下:
train.txt
\1\0483.jpg 1
\1\0123.jpg 1
\1\0393.jpg 1
\1\0458.jpg 1
\1\0074.jpg 1
\1\0367.jpg 1
\1\0236.jpg 1
\1\0471.jpg 1
\1\0291.jpg 1
\1\0052.jpg 1
....................
test.txt
\1\0056.jpg 1
\1\0012.jpg 1
\1\0372.jpg 1
\1\0010.jpg 1
\1\0414.jpg 1
\1\0423.jpg 1
\1\0355.jpg 1
\1\0411.jpg 1
\1\0311.jpg 1
\1\0138.jpg 1
\1\0386.jpg 1
\1\0473.jpg 1
\1\0178.jpg 1
....................