Matlab 关于如何读取文件夹中的所有图片(3种方法)****全****


Matlab读取图片的方法有很多种, 我给出的方法思想和他们的差不多一样,但是代码的风格可能有点区别, 可以学习。

方法1:

首先定义文件夹的名称:

imgDir='.\coimg\';
imgDir2='.\\coimg\\%s';  用于读取图片


 

 具体代码:

oldPwd = pwd;
cd(imgDir);
x = dir;
listOfImages = [];
for i = 1:length(x),
    if x(i).isdir == 0,
          listOfImages = [listOfImages; x(i)];
    end;
end;
cd(oldPwd);

fid=imgDir2;
for j = 1:length(listOfImages)
    fileName = listOfImages(j).name;
    rfid=sprintf(fid,fileName);
    Irgb=imread(rfid);
    Iset{j}=Irgb;
end

文中 x(i).isdir==0 其实意思是跳过i=1,2时,那是isdir==1,其实是为了跳过'.','..',这个应该是操作系统的知识吧。。

最后将读取的图片放在Iset里面。

代码很简单。自己手写,测试成功

两幅图片在Iset里面啦 。。

小技巧值得注意。。。

 

 

方法2:

适合文件夹里面的图片批量处理,非常好的算法,应该值得学习。。

function database = build_database(rt_data_dir,suffix)
% This function is to build a database for the image sets 
% Input:  rt_data_dir -- direction of image sets
%         suffix      -- image format like 'jpg'
% Output: database    -- database that contains all the information of
%                        images

% Written by Wei Q
% July. 16, 2013

fprintf('dir the database...');
subfolders = dir(rt_data_dir);   

database = [];

database.imnum = 0; % total image number of the database
database.cname = {}; % name of each class
database.label = []; % label of each class
database.path = {}; % contain the pathes for each image of each class
database.nclass = 0;

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];
        
        for jj = 1:c_num,
            c_path = fullfile(rt_data_dir, subname, frames(jj).name);
            database.path = [database.path, c_path];
        end;    
    end;
end;
disp('done!');


应该试着自己写写。

方法3:(这种方法有点特别)

 

 

ext = {'*.jpeg','*.jpg','*.png','*.pgm'};

images = [];
for i = 1:length(ext)
    images = [images dir([path ext{i}])];
end

% images are returned with absolute path
for i = 1:length(images)
    images(i).name = [path images(i).name];
end


犀利吧  。。。。 哈哈

 

 

 

你可能感兴趣的:(Matlab 关于如何读取文件夹中的所有图片(3种方法)****全****)