matlab实现一次性实现多个文件夹图片转化为.mat文件

本文介绍了一种方法,能够批量将多个文件夹下的图片转换为.mat文件,并为数据添加标签。通过提供的MATLAB代码,可以轻松实现图像的读取、调整大小、灰度化及归一化等预处理步骤。

考虑到很多人遇到图片转成.mat文件的需要,本文特此贴出一次性将多个文件夹下的图片转化为.mat,同时给数据打上标签,希望能够帮到大家!

%这里是主函数:命名为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文件:

 

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值