matlab實現一次性實現多個文件夾圖片轉化為.mat文件
阿新 • • 發佈:2018-08-18
img mage 標簽 rgb end 參考 strcmp microsoft rcm
%這裏是主函數:命名為readImg.m;
clc;clear;
%---read_image;
filepath = ‘G:\人臉重建\data\src_all\‘;%圖片路徑可以根據自己需要修改;
pic = ‘*jpg‘;%圖片格式,根據自己的圖片格式進行修改;
database = build_database_src(filepath,pic);
%build_database_src.m子函數;
function database = build_database_src(rt_data_dir,suffix)
fprintf(‘dir the database‘);
subfolders = dir(rt_data_dir);
database = [];
database.imnum = 0;
database.cname = {};
database.label = [];
database.path = [];
database.nclass = 0;
label = 0;
k = 1;
src_x = [];
src_y = [];
for ii = 1 : length(subfolders)
subname = subfolders(ii).name;
if ~strcmp(subname,‘.‘) & ~strcmp(subname,‘ ..‘)
database.nclass = database.nclass + 1;
database.cname{database.nclass} = subname;
frames = dir(fullfile(rt_data_dir,subname,suffix));
c_num = length(frames);
database.imnum = database.imnum + c_num;
database.label = [database.label;ones(c_num,1 ) * database.nclass];
label = numel(database.cname);
for jj = 1 : c_num
fprintf(‘folder : %d , num : %d \n‘,ii - 1,jj);
kk1 = frames(jj).name;%顯示具體圖片名;
c_path = fullfile(rt_data_dir,subname,frames(jj).name);
database.path = [database.path,c_path];
img = imread(database.path);%讀取圖片;
im = imresize(img,[64,64]);%設置圖片大小;
if(length(size(im)) == 3)%如果是彩色圖進行灰度化(根據個人需要);
gray = rgb2gray(im);
else
gray = im;
end
gray = double(gray) / 255;%對圖片數據做歸一化(根據個人需要);
database.path = [];
src_x(:,:,k) = gray;%存儲圖像數據;
src_y(1,k) = label;%給數據加標簽;
k = k + 1;
end
end
end
%保存轉化好的.mat文件;
file = [‘src_x.mat‘];
save(file,‘src_x‘,‘-mat‘);
file = [‘src_y.mat‘];
save(file,‘src_y‘,‘-mat‘);
end
我的路徑:G:\人臉重建\data\src_all。運行程序可以看到生成兩個.mat文件。
參考:https://blog.csdn.net/yongjiankuang/article/details/72824081
matlab實現一次性實現多個文件夾圖片轉化為.mat文件