【问题标题】:read multiple images from different folders in matlab从matlab中的不同文件夹读取多个图像
【发布时间】:2014-04-02 18:46:11
【问题描述】:

我有一个文件夹(s80),其中包含 101 个子文件夹,每个子文件夹包含大约 400 张图像。 我想对它们进行一些处理并保存在新文件夹中。我在如何从不同的文件夹中读取它们并将它们保存在新目录中时遇到问题。

确实,我有以下代码可以在一个文件夹上进行处理。如果我给出一个特定文件夹的目录,一切都很好,但我不确定如何为所有 101 个文件夹运行它并将它们保存在一个新目录中。 (代码用于将黑色像素转换为白色,反之亦然)

images = dir(fullfile('C:\data\s80\2436', '*.jpg'));

   for i=1:size(images, 1);
       PATHNAME =(images(i).name);
       imwrite(uint8(255 - double(imread(PATHNAME))),...
       fullfile('C:\data\s80\2436',[num2str(i) '.jpg']));
    end

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以使用函数“dir”列出文件夹“C:\data\s80\2436”的子文件夹和文件,就像对图像所做的那样:http://www.mathworks.fr/fr/help/matlab/ref/dir.html

    listing = dir(name)
    

    在结构“listing”中,您有一个变量“isdir”,它是一个逻辑变量:1 表示文件夹,0 否则。您应该保存所有文件夹名称,例如 structfun() 将“统一输出”设置为 0。

    然后你可以添加一个 for 循环 当我写出我的帽子时,代码可能有问题:

    listing = dir('C:\data\s80')
    IndfoldList = structfun(@(x) x.name(x.isdir==1), listing);
    for ii = 1:length(IndfoldList)
       foldPath= (IndfoldList(ii).name);
       images = dir(fullfile(['C:\data\s80\',Pathfold], '*.jpg'));
       %Your code here
    end
    

    【讨论】:

    • 谢谢,我结合了您的代码和来自 (stackoverflow.com/questions/2652630/…) 的 getALLFiles.m。我也使用了 cellfun 而不是 strucfun 因为它对我不起作用。在您的代码的第 5 行中,它是 foldPath,我认为这是拼写错误。谢谢
    • 哦,对不起,我是法国人,我们把形容词放在名词之后,我忘了把这两行都改成“盎格鲁-撒克逊”时尚语法:)。很高兴我能帮上忙!
    • 我还发现了这个有趣的简短代码来获取隐藏文件。如果有人需要....这是删除它们的快捷方式: s = dir(target); % 'target' 是被调查的目录 %remove hidden files s = s(arrayfun(@(x) ~strcmp(x.name(1),'.'),s)) stackoverflow.com/questions/5234341/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多