1. 程式人生 > >matlab實現一次性實現多個文件夾圖片轉化為.mat文件

matlab實現一次性實現多個文件夾圖片轉化為.mat文件

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文件