Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中使用for循环加载一系列图像文件?_Matlab_Imread - Fatal编程技术网

如何在MATLAB中使用for循环加载一系列图像文件?

如何在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 我应该更改哪个部分?我建议将循

我是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

我应该更改哪个部分?

我建议将循环中的行更改为以下内容:

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{:});