统计、更名
clear;close all ;clc
% dir_path 指定到训练数据集和测试数据集的父目录
dir_path = '/home/li/lilai/myMatlabcode/code1/data';
% 获取dir_path下的文件(夹)
dir_list = dir(dir_path);
dir_list_num = length(dir_list);
%%%%%%%%%%%%%%%%%%%%%%%%%%
% part1:获取对应关系
% 创建新旧文件夹对应关系的txt文件
fid = fopen('old_new.txt','wt');
fprintf(fid,'%s','原文件 新文件 样本数目');
fprintf(fid,'\n\n');
%第一层循环:遍历训练和测试
for i = 3:dir_list_num
if(i<4)
disp "开始处理测试数据集。。。"
fprintf(fid,'%s%s%s',dir_list(i).name',':','test');
fprintf(fid,'\n');
else
disp "开始处理训练数据集。。。"
fprintf(fid,'\n\n');
fprintf(fid,'%s%s%s',dir_list(i).name',':','train');
fprintf(fid,'\n');
end
dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
dir_sub1_list_num = length(dir_sub1_list);
count_num = 0;
for j= 3:dir_sub1_list_num
dir_sub2_list = dir([dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name]);
dir_sub2_list_num = length(dir_sub2_list)-2;
count_num = count_num+dir_sub2_list_num;
fprintf(fid,'%s%s%s%s%d',dir_sub1_list(j).name,':',num2str(j-3,'%02d'),' ',dir_sub2_list_num);
fprintf(fid,'\n');
end
fprintf(fid,'%s%d','总计样本数目为:',count_num);
end
fclose(fid);
%%%%%%%%%%%%%%%%%%%%%%%%%%
% part2:
=
for i = 3:dir_list_num
if(i<4)
disp "开始处理测试数据集名称。。。"
name_new = [dir_path,'/','test'];
else
disp "开始处理训练数据集名称。。。"
name_new = [dir_path,'/','train'];
end
%原文件夹路径+名称
name_old = [dir_path,'/',dir_list(i).name];
%更改名称
movefile(name_old,name_new);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%
% part3:
% 重新获取dir_path下的文件(夹)
dir_list = dir(dir_path);
dir_list_num = length(dir_list);
%第一层循环:遍历训练和测试
for i = 3:dir_list_num
if(i<4)
disp "开始处理测试数据集子目录名称。。。"
else
disp "开始处理训练数据集子目录名称。。。"
end
dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
dir_sub1_list_num = length(dir_sub1_list);
%第二层循环:遍历训练和测试下的子目录
for j = 3:dir_sub1_list_num
%原文件夹路径+名称
name_old = [dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name];
%新文件夹路径+名称
name_new = [dir_path,'/',dir_list(i).name,'/',num2str(j-3,'%02d')];
%更改名称
movefile(name_old,name_new);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%
% part4:
% 重新获取dir_path下的文件(夹)
dir_list = dir(dir_path);
dir_list_num = length(dir_list);
%第一层循环:遍历训练和测试
for i = 3:dir_list_num
if(i<4)
disp "开始处理测试数据集图片。。。"
else
disp "开始处理训练数据集图片。。。"
end
dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
dir_sub1_list_num = length(dir_sub1_list);
%第二层循环:遍历训练和测试下的子目录
for j = 3:dir_sub1_list_num
dir_sub2_list = dir([dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name]);
dir_sub2_list_num = length(dir_sub2_list);
%第三层循环:遍历图片
for k = 3:dir_sub2_list_num
name_old = [dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name,'/',dir_sub2_list(k).name];
name_new = [dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name,'/','idx__',num2str(k-3,'%03d')];
movefile(name_old,name_new);
end
end
end
获取路径列表和对应label
clear; close all ;clc;
dir_path = '/home/li/lilai/myMatlabcode/code1/data';
dir_list = dir(dir_path);
dir_list_num = length(dir_list);
for i = 3:dir_list_num
if strcmp(dir_list(i).name,'test')
fid1 = fopen('val.txt','w');
dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
dir_sub1_list_num = length(dir_sub1_list);
for j = 3:dir_sub1_list_num
dir_sub2_list = dir([dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name]);
dir_sub2_list_num = length(dir_sub2_list);
for k = 3:dir_sub2_list_num
fprintf(fid1,'%s%s%d',[dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name,'/',dir_sub2_list(k).name],' ',str2num(dir_sub1_list(j).name));
fprintf(fid1,'\n');
end
end
fclose(fid1);
end
if strcmp(dir_list(i).name,'train')
fid2 = fopen('train.txt','w');
dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
dir_sub1_list_num = length(dir_sub1_list);
for j = 3:dir_sub1_list_num
dir_sub2_list = dir([dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name]);
dir_sub2_list_num = length(dir_sub2_list);
for k = 3:dir_sub2_list_num
fprintf(fid2,'%s%s%d',[dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name,'/',dir_sub2_list(k).name],' ',str2num(dir_sub1_list(j).name));
fprintf(fid2,'\n');
end
end
fclose(fid2);
end
end