如何在MATLAB中使用for循环加载一系列图像文件?
我是MATLAB的初学者。我想使用for循环在特定文件夹中加载200个大小为192x192的图像文件 图像名称是“1.png”、“2.png”、“3.png”等等 我的代码如下如何在MATLAB中使用for循环加载一系列图像文件?,matlab,imread,Matlab,Imread,我是MATLAB的初学者。我想使用for循环在特定文件夹中加载200个大小为192x192的图像文件 图像名称是“1.png”、“2.png”、“3.png”等等 我的代码如下 list = dir('C:/preds/*.png'); N = size(list,1); sum_image = zeros(192,192,200); for i = 1:N sum_image(:,:,i) = imread('C:/preds/i.png'); end 我应该更改哪个部分?我建议将循
list = dir('C:/preds/*.png');
N = size(list,1);
sum_image = zeros(192,192,200);
for i = 1:N
sum_image(:,:,i) = imread('C:/preds/i.png');
end
我应该更改哪个部分?我建议将循环中的行更改为以下内容:
sum_image(:,:,i) = imread(['C:/preds/', num2str(i), '.png']);
MATLAB将字符串中的i视为字符,而不是变量i。上面的代码一段一段地构建字符串。我可能会像下面的代码那样: 您当前正在获取文件名列表,但实际上并没有对其进行太多处理。在列表上迭代更安全,否则如果缺少一个数字,您可能会遇到问题。此外,排序可能是不必要的,这取决于图像编号是否为零填充,以便它们以正确的顺序出现。。。但安全总比后悔好。另一个小变化是将数组初始化为大小N,而不是硬编码200。这将使它更加灵活
searchDir = 'C:\preds\';
list = dir([searchDir '*.png']);
nameList = {list.name}; %Get array of names
imNum = str2double(strrep(nameList,'.png','')); %Get image number
[~,idx] = sort(imNum); %sort it
nameList = nameList(idx);
N = numel(nameList);
sum_image = zeros(192,192,N);
for i=1:N
sum_image(:,:,i) = imread(fullfile(searchDir,nameList{i}));
end
如果这不是一个家庭作业问题,这个问题的正确答案是不要把它写成for循环。使用图像数据存储:
有什么特别的东西不起作用吗?获取任何地方的错误等。此外,是否填充了文件名0。。。所以001,002。。。009010…等等。或者1,2,…,9,10谢谢你的评论谢谢你的评论!没问题,不用谢。如果有用就向上投票,如果没有就向下投票。谢谢你的评论!
ds = imageDatastore('C:/preds/');
sumImageCellArray = readall(ds);
sumImage = cat(3,sumImageCellArray{:});