MATLAB: Hello! I was hoping if you could help tell me how to read images from a subfolder and store them in an array. I have this code but it doesnt read the subfolder images

image processingmatrix array

myFolder=('C:\Users\Paul\Documents\MATLAB\SignatureDataset);
if ~isdir(myFolder)
errorMessage = sprintf('Error: The following folder does not exist: \n%s', myFolder);
uiwait(warndlg(errorMessage));
return;
end
filePattern = fullfile(myFolder, '*.png');
pngFiles = dir(filePattern);
for k = 1:length(pngFiles)
baseFileName = pngFiles(k).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(1, 'Now readng %s\n', fullFileName);
imageArray = imread(fullFileName);
imshow(imageArray);
drawnow; %Force display to update immediately.
end

Best Answer

That code would appear to be appropriate for png files that are directly in C:\Users\Paul\Documents\MATLAB\SignatureDataset .
If you want to look inside all folders inside C:\Users\Paul\Documents\MATLAB\SignatureDataset then you will need to either program finding the folders yourself, or you will need to use a tool such as rdir() from the File Exchange. Or, if you are using R2017a or later you can use the new behavior of dir():
%the below is R2017a or later only
myFolder=('C:\Users\Paul\Documents\MATLAB\SignatureDataset);
if ~isdir(myFolder)
errorMessage = sprintf('Error: The following folder does not exist: \n%s', myFolder);
uiwait(warndlg(errorMessage));
return;
end
filePattern = fullfile(myFolder, '**', '*.png'); %needs R2017a or later

pngFiles = dir(filePattern);
for k = 1:length(pngFiles)
folderName = pngFiles(k).folder; %needs R2017a or later
baseFileName = pngFiles(k).name;
fullFileName = fullfile(folderName, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
imageArray = imread(fullFileName);
imshow(imageArray);
drawnow; %Force display to update immediately.
end