我需要加载图片列表,其中的名称格式为A_00001_01.jpeg
,A_00001_02.jpeg
,A_00021_01.jpeg
,A_00030_01.jpeg
,A_00039_01.jpeg
,{{1 }}。我知道列表中的第一个索引;第二个索引通常是A_00039_02.jpeg
,但它也可以是01
或02
。对于某个第一个索引,我需要加载所有文件(第二个索引无关紧要)。
有没有办法用通配符加载文件,比如下面的伪代码(不工作)?
03
答案 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