从matlab中的不同文件夹中读取多个图像

时间:2014-04-02 10:15:45

标签: matlab

我有一个文件夹(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

1 个答案:

答案 0 :(得分:1)

您可以使用函数'dir'列出文件夹'C:\ data \ s80 \ 2436'的子文件夹和文件,如图所示:http://www.mathworks.fr/fr/help/matlab/ref/dir.html

listing = dir(name)

在结构“列表”中,您有一个变量“isdir”,它是一个逻辑:1表示文件夹,0表示文件夹。您应该保存所有文件夹的名称,例如structfun(),并将“uniform output”设置为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