读取根目录及其所有子目录下某一格式的所有文件

当需要对保存在很多不同子文件夹下文件做统一处理时, 逐个手动到每个文件夹取逐个处理很麻烦.
此处以对子文件下的 'PNG' 格式图片做滤波操作为实例.

一下代码放在 'Low_Rank' 文件夹的同一层

function Read_subfolders_img
path       = 'Low_Rank';  % 根目录;  
subfolders = genpath(path);  % 生成根目录下所有的子文件夹, subfolders 为所有子文件夹路径组成的一个字符串, 以分号 ';' 间隔开.
folders    = strsplit(subfolders, ';');  % 对上述的一个字符串拆分, 得到每个子文件的路径, folders 为 cell 格式
filepaths  = cellfun(@(x) (['./', x, '/']), folders, 'UniformOutput', false);   % 将每个子文件夹路径变为相对路径
for i = 1:length(filepaths)
    imgs = dir([filepaths{i}, '*.png']);  % 得到每个子文件夹下 'PNG' 格式图片的属性, 这里主要用到 name 属性
    L    = length(imgs);  % 某一子文件夹下 'PNG' 格式图片的个数
    if L > 0
        writepath = [filepaths{i}, 'test/'];  % 在原始图片路径下新建一个test文件夹用于保存处理后的图片
        if ~exist(writepath, 'dir')
           mkdir(writepath);
        end

        for j = 1:L
            img = ACWMF(imread([filepaths{i}, imgs(j).name])); % 读取图片, 并滤波
            imwrite(img/255, [writepath, imgs(j).name])  % 写入处理后的图片
        end
    end
end
posted @ 2021-12-12 11:11  DifDay哒哒哒  阅读(104)  评论(0)    收藏  举报