繁体   English   中英

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

[英]How to read images from folders in matlab

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

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

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

最简单的方法当然是正确选择matlab的forl和“添加到路径” >>“选定的文件夹和子文件夹”

然后,您无需指定路径就可以获取具有未imread图像。

如果您知道包含目录的映像的路径,则可以在目录上使用dir列出其中的所有文件(和目录)。 过滤具有所需图像扩展名的文件,瞧,您有一个数组,其中包含指定目录中的所有图像:

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

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

由于已通配的目录^^,因此%%的值已过时
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调用的建议

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM