Error while reading image in loop to perform some operation on all images in folder

2 views (last 30 days)
I am getting error, while using this recursive function to read the images and perform some operation on all images in a given folder.
function recursiveFile()
Files=dir('D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images\*.tif');
for k=1:length(Files)
Files(k).name;
image1 = strcat('D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images\*.tif',Files(k).name);
i = imread(image1);
%encode_HTJ2K(image,i,1);
end

Accepted Answer

KSSV
KSSV on 10 Nov 2021
Edited: KSSV on 10 Nov 2021
function recursiveFile()
Files=dir('D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images\*.tif');
for k=1:length(Files)
Files(k).name;
% You need to change thepath in the below line. Don't use *tif
image1 = strcat('D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images\',Files(k).name);
i = imread(image1);
%encode_HTJ2K(image,i,1);
end
  2 Comments
Walter Roberson
Walter Roberson on 10 Nov 2021
Edited: Walter Roberson on 10 Nov 2021
function recursiveFile()
projectdir = 'D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images');
Files = dir(fullfile(projectdir, '*.tif'));
for k=1:length(Files)
image1 = fullfile(Files(k).folder, Files(k).name);
i = imread(image1);
%encode_HTJ2K(image,i,1);
end
I deliberately wrote it using the .folder field, because the function name suggests that you might want to search all sub-directories, which you could do by using a small modification,
function recursiveFile()
projectdir = 'D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images');
Files = dir(fullfile(projectdir, '**', '*.tif'));
for k=1:length(Files)
image1 = fullfile(Files(k).folder, Files(k).name);
i = imread(image1);
%encode_HTJ2K(image,i,1);
end
The '**' tells it to look under all subdirectories recursively.
KSSV
KSSV on 10 Nov 2021
You can also use:
image1 = [Files(k).folder,filesep,Files(k).name] ;
instead of
image1 = strcat('D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images\',Files(k).name);

Sign in to comment.

More Answers (1)

Chunru
Chunru on 10 Nov 2021
function recursiveFile()
% Files=dir('D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images\*.tif');
folder = "D:\datasets\PRImA_LayoutAnalysisDataset\PRImA Layout Analysis Dataset\Images\";
Files=dir(fullfile(folder, "*.tif");
for k=1:length(Files)
%Files(k).name;
image1 = fullfile(folder, Files(k).name);
i = imread(image1);
%encode_HTJ2K(image,i,1);
end

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!