使用通配符

时间:2016-05-07 21:38:49

标签: matlab input

我需要加载图片列表,其中的名称格式为A_00001_01.jpegA_00001_02.jpegA_00021_01.jpegA_00030_01.jpegA_00039_01.jpeg,{{1 }}。我知道列表中的第一个索引;第二个索引通常是A_00039_02.jpeg,但它也可以是0102。对于某个第一个索引,我需要加载所有文件(第二个索引无关紧要)。

有没有办法用通配符加载文件,比如下面的伪代码(不工作)?

03

1 个答案:

答案 0 :(得分:1)

您必须循环加载文件/读取图像。您可以尝试使用顺序索引加载文件,但如果缺少某些索引,那么这将无法正常工作。假设您的所有文件都在同一目录中,您可以读取该目录的内容然后加载只有那些与模式匹配的文件。如果它们位于多个目录中,您也可以遍历这些目录。

我使用strncmp检查文件名是否与模式匹配,假设它足以确保第一个索引匹配。如果是您还需要确保第二个索引是一个数字,而是使用regexp

最后,如果您想阅读图片,则需要使用imread,而不是load

firstIdx = 1;
pattern = sprintf('A_%05i_', firstIdx);
flist = dir(); % specify actual directory path, if different from current folder
flist = flist(~[flist.isdir]); % leave only files
images = {};
for f = 1:length(flist)
    [~, name, ext] = fileparts(flist(f).name);
    if strcmp(ext, '.jpeg') && strncmp(pattern, name, length(pattern))
        images{end+1} = imread(flist(f).name);
    end
end