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