Matlab - 名称变量与文件名相同?

时间:2014-03-05 21:13:47

标签: matlab file-io

我正在构建面部识别程序并加载一大堆将用于训练的图像。

目前,我正在使用双循环读取我的图像,遍历文件夹中的子文件夹。

在迭代时,是否有任何方法可以在读取和存储图像之前使用图像文件名?

例如。我有一张图片person001.jpg。如何检索该名称(person001),然后阅读图像:person001 = imread('next iteration of loop which happens to be person001');

提前致谢。

1 个答案:

答案 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.person001allImages.(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不需要剪切文件扩展名。