1

我有六个这样的文件夹>>图像 ,每个文件夹都包含一些图像。我知道如何在 matlab 中读取图像但我的问题是如何遍历这些文件夹并读取 abc.m 文件中的图像(此文件显示在此图像中)

4

3 回答 3

0

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

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

于 2012-05-27T19:54:29.130 回答
0

最简单的方法当然是在matlab中的forlder上右键单击并“添加到路径”>>“选定的文件夹和子文件夹”

然后你可以在imread不指定路径的情况下获取图像。

于 2012-05-27T20:00:08.367 回答
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

如果您还想递归子目录,我建议您看一下:

如何获取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 对 dir 调用通配符的建议

于 2012-05-27T21:31:43.097 回答