我正在构建面部识别程序并加载一大堆将用于训练的图像。
目前,我正在使用双循环读取我的图像,遍历文件夹中的子文件夹。
在迭代时,是否有任何方法可以在读取和存储图像之前使用图像文件名?
例如。我有一张图片person001.jpg
。如何检索该名称(person001),然后阅读图像:person001 = imread('next iteration of loop which happens to be person001');
提前致谢。
答案 0 :(得分:5)
我强烈建议不要使用非结构化变量。首先,很难进行类似"迭代所有图像的操作"其次,您可能会遇到包含变量名称的函数名称的奇怪问题。相反,我会使用带有动态字段名称或地图的结构。带有Map的解决方案可以允许所有可能的文件名。
动态字段名称:
dirlisting=dir('.jpg');
for imageIX=1:numel(dirlisting)
%cut of extension:
[~,name,~]=fileparts(dirlisting(imageIX).name);
allImages.(name)=imread(dirlisting(imageIX).name);
end
您可以使用allImages.person001
或allImages.(x)
地图:
allImages=containers.Map
dirlisting=dir('.jpg');
for imageIX=1:numel(dirlisting)
%cut of extension:
[~,name,~]=fileparts(dirlisting(imageIX).name);
allImages(name)=imread(dirlisting(imageIX).name);
end
您可以使用allImages('person001')
访问地图中的图像。使用Map不需要剪切文件扩展名。