利用Matlab将多张图片转换成mat文件

利用Matlab将多张图片转换成mat文件

单文件夹情况

说明

使用Matlab对图片进行操作时,大量的单张图片不利于操作,此时需要将图片转化为.mat格式,.mat方便我们对数据的处理,使我们更加高效的利用数据。文章中的代码是以PIE数据集作为转换的原始数据,每张图片的名称是连续的数字,相同类别的图片张数相等且名称连续。代码不是很复杂,关键的地方已经加上了注释,就不再详细说明。以下是我的代码。也可以去我的git上下载程序和测试图片。

代码

%%针对图片名为连续标号的Matlab程序
file_path = 'C:\Users\Arlen\Documents\MATLAB\PictoMat\test\';%图片路径可以根据自己需要修改;  
pic = '*jpg';%图片格式,根据自己的图片格式进行修改;  
img_path_list = dir(strcat(file_path,pic));%获取该文件夹中所有jpg格式的信息
fea = [];%特征
gnd = [];%所属类别
num_perClass=24;%每一类包含的图片张数
for i = 1:size(img_path_list,1)
img=imread([file_path,num2str(i),'.jpg']);%此处‘.jpg’根据需求更改
im = reshape(img,1,size(img,1)*size(img,2));
fea(i,:) = im;
class = fix(i/num_perClass)+1;%不能整除时,类别数比真实类别差1
if(class)
    gnd(i,1) = class;
    if(~rem(i,num_perClass)) %如果余数为0,则类别直接是商
       gnd(i,1) = i/num_perClass;
    end
end
end
save test.mat fea gnd

多文件夹情况

说明及代码

文节中的代码针对一个文件夹下包含多个子文件夹,每个子文件下包含数量不等的图片git代码

clc;clear;
% you can change the path
addpath('.\007\');
path = '.\007\';
savePath = '.\result\';
filename = dir(path);
filelen = length(filename);
names = {};
output = {};
k = 0;
for i = 1:filelen-2  % dataset
    subPath = [path,filename(i+2).name,'\'];
    if isdir(subPath)
        fn = dir(subPath);
        fnlen = length(fn);

            for j = 1:fnlen-2  % prdiction case 
                pic = [];
                temp = [];
                k = k+1;
                temp = fn(j+2).name;
                names{k} = temp;
                pic = imread([subPath, temp]);
                output{k} = pic;
            end 
    end
end
save result.mat output names

disp('done !')

代码如有错误,欢迎指正。

  • 15
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 41
    评论
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值