如何在matlab裡批量將JPG格式圖片轉成MAT格式檔案?
阿新 • • 發佈:2019-02-11
http://blog.csdn.net/yongjiankuang/article/details/72824081
考慮到很多人遇到圖片轉成.mat檔案的需要,本文特此貼出一次性將多個資料夾下的圖片轉化為.mat,同時給資料打上標籤,希望能夠幫到大家!
%這裡是主函式:命名為readImg.m;
- clc;clear;
- %---read_image;
- filepath = 'G:\人臉重建\data\src_all\';%圖片路徑可以根據自己需要修改;
- pic = '*jpg';%圖片格式,根據自己的圖片格式進行修改;
-
database = build_database_src(filepath,pic);
- 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
執行程式可以看到生成兩個.mat檔案: