- 做图像处理实验,经常需要遍历当前文件下所有图片。matlab当然很早就考虑了这个问题,库函数dir就是完成这个工作的。函数返回的是一个存放所有目录下文件信息的结构体,通过遍历结构体就可以达到访问所有文件的目的了。具体实现见下面程序:
- 1
- 2
- 3
- 4
- 5
- 6
上面imgDir返回的是一个结构体,包含每个图片name(名称),date(日期),bytes(字节数),isdir(是否为文件夹/目录),datenum(修改日期,连续日期号码)。一般我们仅需使用图片名称就可以完成图片遍历的工作
需要先遍历所有子文件夹,然后依次再遍历每个子文件夹下的图片。程序如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
上面需要注意去除两个系统自带的隐藏文件夹,这个在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