1. 程式人生 > >如何在matlab裡批量將JPG格式圖片轉成MAT格式檔案?

如何在matlab裡批量將JPG格式圖片轉成MAT格式檔案?

http://blog.csdn.net/yongjiankuang/article/details/72824081

考慮到很多人遇到圖片轉成.mat檔案的需要,本文特此貼出一次性將多個資料夾下的圖片轉化為.mat,同時給資料打上標籤,希望能夠幫到大家!

%這裡是主函式:命名為readImg.m;

  1. clc;clear;  
  2. %---read_image;  
  3. filepath = 'G:\人臉重建\data\src_all\';%圖片路徑可以根據自己需要修改;  
  4. pic = '*jpg';%圖片格式,根據自己的圖片格式進行修改;  
  5. database = build_database_src(filepath,pic);  
%build_database_src.m子函式;
  1. function database = build_database_src(rt_data_dir,suffix)  
  2. fprintf('dir the database');  
  3. subfolders = dir(rt_data_dir);  
  4. database = [];  
  5. database.imnum = 0;  
  6. database.cname = {};  
  7. database.label = [];  
  8. database.path = [];  
  9. database.nclass = 0;  
  10. label = 0;  
  11. k = 1;  
  12. src_x = [];  
  13. src_y = [];  
  14. for ii = 1 : length(subfolders)  
  15.     subname = subfolders(ii).name;  
  16.     if ~strcmp(subname,'.') & ~strcmp(subname,'..')  
  17.         database.nclass = database.nclass + 1;  
  18.         database.cname{database.nclass} = subname;  
  19.         frames = dir(fullfile(rt_data_dir,subname,suffix));  
  20.         c_num = length(frames);  
  21.         database.imnum = database.imnum + c_num;  
  22.         database.label = [database.label;ones(c_num,1) * database.nclass];  
  23.         label = numel(database.cname);  
  24.         for jj = 1 : c_num  
  25.             fprintf('folder : %d , num : %d \n',ii - 1,jj);  
  26.             kk1 = frames(jj).name;%顯示具體圖片名;  
  27.             c_path = fullfile(rt_data_dir,subname,frames(jj).name);  
  28.             database.path = [database.path,c_path];  
  29.             img = imread(database.path);%讀取圖片;  
  30.             im = imresize(img,[64,64]);%設定圖片大小;  
  31.             if(length(size(im)) == 3)%如果是彩色圖進行灰度化(根據個人需要);  
  32.                 gray = rgb2gray(im);  
  33.             else  
  34.                 gray = im;  
  35.             end  
  36.             gray = double(gray) / 255;%對圖片資料做歸一化(根據個人需要);  
  37.             database.path = [];  
  38.             src_x(:,:,k) = gray;%儲存影象資料;  
  39.             src_y(1,k) = label;%給資料加標籤;  
  40.             k = k + 1;  
  41.         end  
  42.     end  
  43. end  
  44. %儲存轉化好的.mat檔案;  
  45. file = ['src_x.mat'];  
  46. save(file,'src_x','-mat');  
  47. file = ['src_y.mat'];  
  48. save(file,'src_y','-mat');  
  49. end  
我的路徑:G:\人臉重建\data\src_all,如下所示:

執行程式可以看到生成兩個.mat檔案: