Search code examples
matlabimread

How to load a sequence of image files using a for loop in MATLAB?


I am beginner in MATLAB. I would like to load 200 image files (size 192x192) in a specific folder by using a for loop.

The image names are '1.png', '2.png', '3.png' and so on.

My code is as below.

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

Which part should I change ?


Solution

  • I would probably do it like the code below: You are currently getting the list of filenames then not really doing much with it. Iterating over the list is safer otherwise if there is a missing number you could have issues. Also, the sort maybe unnecessary depending if you image numbering is zero-padded so they come out in the correct order ... but better safe than sorry. One other small change initializing the array to size N instead of hard-coding 200. This will make it more flexible.

    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