您的位置:首页 > 编程语言 > MATLAB

Matlab代码-遍历文件夹下所有指定格式的图像

2017-12-14 21:17 453 查看

1. 说明

这里提供给大家两个函数,可以按照自己的需求调用相关的函数实现扫描文件夹(不扫描子文件夹)和扫描文件夹并扫描子文件夹。

2. 只遍历当前文件夹

% 函数功能:指定路径path下所有图像路径,不扫描子文件夹
% path:查找的路径
% file_mask:需要查找的文件类型,比如*.jpg
function file_list = ScanDir(path, file_mask)
file_path =  path;  % 图像文件夹路径
img_path_list = dir(strcat(file_path, file_mask)); % 获取该文件夹中所有jpg格式的图像
img_num = length(img_path_list);    % 获取图像总数量
file_list = cell(img_num, 1);
if img_num > 0 %有满足条件的图像
for j = 1:img_num %逐一读取图像
image_name = img_path_list(j).name;% 图像名
fprintf('当前找到指定的文件 %s\n', strcat(file_path,image_name));% 显示扫描到的图像路径名
file_list{j} = image_name;
end
end
end


3. 遍历当前文件夹和子文件夹

% 函数功能:指定路径下多个文件夹中所有图像,该代码可以读取文件夹path中及path的所有子文件夹中的图像。
% path:查找的路径
% file_mask:需要查找的文件类型,比如*.jpg
function file_list = RScanDir(path, file_mask)
p = genpath(path);      % 获得文件夹path下所有子文件的路径,这些路径存在字符串p中,以';'分割
length_p = size(p,2);   % 字符串p的长度
path = {};  % 建立一个单元数组,数组的每个单元中包含一个目录
temp = [];
file_list = []; % 保存扫描到的路径
for i = 1:length_p % 寻找分割符';',一旦找到,则将路径temp写入path数组中
if p(i) ~= ';'
temp = [temp p(i)];
else
temp = [temp '\']; %在路径的最后加入 '\'
path = [path ; temp];
temp = [];
end
end
clear p length_p temp;
% 至此获得data文件夹及其所有子文件夹(及子文件夹的子文件夹)的路径,存于数组path中。
% 下面是逐一文件夹中读取图像
file_num = size(path,1);% 子文件夹的个数
for i = 1:file_num
file_path =  path{i}; % 图像文件夹路径
img_path_list = dir(strcat(file_path, file_mask));
img_num = length(img_path_list); %该文件夹中图像数量
if img_num > 0
for j = 1:img_num
image_name = img_path_list(j).name; % 图像名
fprintf('当前找到指定的文件 %s\n', strcat(file_path,image_name));    % 显示扫描到的图像路径名
file_list = [file_list; image_name];
end
end
end
end


4. 其它资料

matlab遍历文件夹下所有图片和遍历所有子文件夹下图片

MATLAB遍历子文件夹及其下文件

MATLAB遍历子文件夹及其下文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: