如何从matlab中的文件夹中读取图像

时间:2012-05-27 19:47:51

标签: image matlab file-io

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

最简单的方法肯定是matlab中forlder的正确clic和“Add to Path”>> “选定的文件夹和子文件夹”

然后,您可以使用imread获取图像,而无需指定路径。

答案 2 :(得分: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关于通配dir电话的建议