MATLAB读取文件夹及其所有子文件夹内的图像

1. 遍历当前文件夹下所有图片

做图像处理实验,经常需要遍历当前文件下所有图片。matlab当然很早就考虑了这个问题,库函数dir就是完成这个工作的。函数返回的是一个存放所有目录下文件信息的结构体,通过遍历结构体就可以达到访问所有文件的目的了。具体实现见下面程序:

imgPath = 'E:/imageData/';        % 图像库路径
imgDir  = dir([imgPath '*.jpg']); % 遍历所有jpg格式文件
for i = 1:length(imgDir)          % 遍历结构体就可以一一处理图片了
    img = imread([imgPath imgDir(i).name]); %读取每张图片
end

 

 

上面imgDir返回的是一个结构体,包含每个图片name(名称),date(日期),bytes(字节数),isdir(是否为文件夹/目录),datenum(修改日期,连续日期号码)。一般我们仅需使用图片名称就可以完成图片遍历的工作。

 

2. 遍历当前文件夹下所有子文件夹中所有图片

如果有做co-segmentation、多图像分类或者co-saliency等方向的人,经常会遇到需要访问不同分类图片文件夹下的图片。这时候我们就需要先遍历所有子文件夹,然后依次再遍历每个子文件夹下的图片。程序如下:

imgDataPath = 'E:/imageData/';
imgDataDir  = dir(imgDataPath);             % 遍历所有文件
for i = 1:length(imgDataDir)
    if(isequal(imgDataDir(i).name,'.')||... % 去除系统自带的两个隐文件夹
       isequal(imgDataDir(i).name,'..')||...
       ~imgDataDir(i).isdir)                % 去除遍历中不是文件夹的
           continue;
    end
    imgDir = dir([imgDataPath imgDataDir(i).name '/*.jpg']); 
    for j =1:length(imgDir)                 % 遍历所有图片
        img = imread([imgDataPath imgDataDir(i).name '/' imgDir(j).name]);
    end
end

 

上面需要注意去除两个系统自带的隐藏文件夹,这个在dir函数读取所有文件时候也会全部遍历出来,然后去除非子文件夹的文件。当然,如果当前文件夹下也有图片,if语句最后一个条件不用判断了。

3,将所有图片放到拼接到一起组成一张图片并显示。

clear
file_path =  '.\orl_faces\s1\';% 图像文件夹路径
img_path_list = dir(strcat(file_path,'*.pgm'));%获取该文件夹中所有jpg格式的图像
img_num = length(img_path_list);%获取图像总数量
BigPic = cell(3,3);

if img_num > 0 %有满足条件的图像
        for j = 1:9 %逐一读取图像
            image_name = img_path_list(j).name;% 图像名
            BigPic{j} =  imread(strcat(file_path,image_name));
%             i(j) = image;
%             fprintf('%d %d %s\n',i,j,strcat(file_path,image_name));% 显示正在处理的图像名
            %图像处理过程 省略
        end
end
BigPic = cell2mat(BigPic);

imshow(BigPic);


 

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值