2012-05-27 98 views
1

我有六个文件夹喜欢这个>>Images 和每个文件夹包含一些图像。我知道如何在matlab中读取图像,但我的问题是如何遍历这些文件夹并读取abc.m文件中的图像(此文件显示在image中),任何帮助都将有所帮助。提前致谢。如何从matlab中的文件夹读取图像

回答

0

因此,基本上你想读取不同文件夹中的图像,而无需将所有图像放入一个文件夹并使用imread()?因为你可以复制所有的图像(并且以一种让你知道它来自哪个文件夹的方式命名它们)到你的MATLAB工作目录中,然后以这种方式加载它们。

使用cd命令更改目录(如* nix中),然后在遍历每个文件夹时加载/读取图像。您可能需要绝对路径名称。

+0

谢谢回到上一个(父母)目录?就像在DOS下它的'cd..' –

+0

'cd ..' '.'指的是当前目录,'..'指它的父目录。 – Adam27X

+0

的意思是'cd'..';'会把我移到它的父目录吗? –

0

最简单的方法当然是在MATLAB中的forlder权利CLIC和“添加到路径” >>“选定的文件夹和子文件夹”

然后你可以得到与imread图像,而不指定路径。

+0

非常感谢你的回复 –

0

如果您知道包含目录的映像的路径,则可以使用其上的dir来列出其中的所有文件(和目录)。过滤器,你想要的形象推广,瞧这些文件,你必须与所有在您指定的目录图像的数组:

dirname = 'images'; 
ext = '.jpg'; 

sDir= dir(fullfile(dirname ,['*' ext]));; 
sDir([sDir.isdir])=[]; % remove directories 

%以下是过时的,因为通配符DIR ^^
B = arrayfun(@ (x)strcmpi(x.name(end-length(ext)+1:end),ext),sDir); %过滤器
sFiles = sDir(b);

你可能想前缀是目录中每个文件的名称使用前:

sFileName(ii) = fullfile(dirname, sFiles(ii)); 

,只要你想你可以处理这个生成的文件。加载的所有文件,例如:

for ii=1:numel(sFiles) 
    data{i}=imread(sFiles(ii).name) 
end 

如果你也想递归子目录,我建议你看看:

How to get all files under a specific directory in MATLAB?

或其他解决方案的FEX

http://www.mathworks.com/matlabcentral/fileexchange/8682-dirr-find-files-recursively-filtering-name-date-or-bytes

http://www.mathworks.com/matlabcentral/fileexchange/15505-recursive-dir

编辑:添加Amro的通配符目录的建议

+1

而不是手动过滤文件,你可以指定如下内容:'dir('folder \ *。ext') '。这里是一个例子:http://stackoverflow.com/a/7293443/97160 – Amro

+0

@Amro:我在想这样的通配符不起作用..我想我把它与其他东西混淆了:p thx的提示! –

相关问题