我有一组位于文件夹中的图像,我正在尝试读取这些图像并将其名称存储在文本文件中。图像的顺序非常重要。
我的代码如下:
imagefiles = dir('*jpg');
nfiles = length(imagefiles); % Number of files found
%*******************
for ii=1:nfiles
currentfilename = imagefiles(ii).name;
% write the name in txt file
end
按以下顺序存储在文件夹中的图像:{1,2,3,4,100,110}
。
Matlab读取和写入图像序列为{ 1,100,110,2,3,4}
的问题。哪个订单不正确。
如何克服这个问题?
答案 0 :(得分:1)
我建议使用scanf
来查找文件的编号。为此,您必须创建一个格式规范,显示您的文件名的构建方式。如果是数字,则后跟.jpg
,即:'%d.jpg'
。
您可以使用name
在cellfun
个文件上拨打sscanf
(扫描字符串):
imagefiles = dir('*jpg');
fileNo = cellfun(@(x)sscanf(x,'%d.jpg'),{imagefiles(:).name});
然后排序fileNo
,保存已排序数组的索引并在for循环中遍历这些索引:
[~,ind] = sort(fileNo);
for ii=ind
currentfilename = imagefiles(ii).name;
% write the name in txt file
end