matlab读取文件夹下的所有图片及其子文件夹下的所有图片

您所在的位置:网站首页 怎样知道文件夹里有多少张图片 matlab读取文件夹下的所有图片及其子文件夹下的所有图片

matlab读取文件夹下的所有图片及其子文件夹下的所有图片

2024-07-04 17:48| 来源: 网络整理| 查看: 265

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

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

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

需要先遍历所有子文件夹,然后依次再遍历每个子文件夹下的图片。程序如下:

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 12345678910111213

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

clc; clear all;   maindir =  'E:\Temp Folder' ; subdir =  dir( maindir );   % 先确定子文件夹   for  i = 1 : length( subdir )      if ( isequal( subdir( i ).name,  '.'  ) || ...          isequal( subdir( i ).name,  '..'  ) || ...          ~subdir( i ).isdir )   % 如果不是目录跳过          continue ;      end            subdirpath = fullfile( maindir, subdir( i ).name,  '*.jpg'  );      images = dir( subdirpath );   % 在这个子文件夹下找后缀为jpg的文件            % 遍历每张图片      for  j = 1 : length( images )          imagepath = fullfile( maindir, subdir( i ).name, images( j ).name  ) %         imgdata = imread( imagepath );   % 这里进行你的读取操作      end end



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3