MATLAB Answers

hp
0

How to open multiple folders for processing?

Asked by hp
on 26 Mar 2018
Latest activity Commented on by hp
on 3 Apr 2018
I need to process images in the folder, and each folder contains many images.. how can I process images which are in multiple folder, which has to be open one at a time, process folder of images and continue to open another folder to process set of images available in it...?like this it should open folders and continue to process until all the folder specified are done...

  0 Comments

Sign in to comment.

2 Answers

Answer by Paul Shoemaker on 26 Mar 2018

Hema,
Since you don't provide more concrete details about your specific circumstances (code, examples, purpose, etc), I will give a fairly broad answer that hopefully points you in the right direction.
Feel free to respond back with more details if the below ideas miss the mark.
Consider using the Matlab "dir" function to scan for files, which you can have run recursively in newer versions of Matlab. Another newer feature you could use is the "datastore" approach. Type help for either dir or datastore and you should get some good info to help with what you need.
Paul Shoemaker

  4 Comments

Show 1 older comment
Ok Hema,
Check out the help for dir. I think it will do what you want, but again you have to have a fairly recent version of Matlab.
Use something like this
myFiles = dir(fullfile(Parent_Directory,'**/*.*'));
This will get all files in sub-folders, or modify "*.*" to be "*.png" or whatever file format you have.
Then you can do something like the below to cycle through all the returned files and process them.
for idx = 1:numel(myFiles)
currentFile = fullfile(myFiles(idx).folder,myFiles(idx).name);
% Do some processing below
end
Hope this helps solve your problem.
Paul Shoemaker
Hi Paul, I tried this code but Iam not getting what I wanted.... I have a folder Named Database in which I have other sub-folders , each sub-folder contains s0me 100 images... it should open main folder,in which it gets many folders, open one by one folder and process the images in it...
Hi Paul... Thanks for your concern... I used Uigetdir to select the required folder...uigetfile for getting all the files of that folder.. but did not get to know how to open folders one after the other in for loop..
Dirname = uigetdir('G:\matlab2013\Crack\bin\DATABASES','Pick a Directory');
dir_in=(strcat(Dirname,('\')));
file_ext = 'jpg';
listing = dir(strcat(dir_in,'*.',file_ext));
file_names = {listing.name};
num_pages = length(file_names);
I guess I can use the similar to the above code to find the total folder in the main folder... thank you

Sign in to comment.


Answer by Image Analyst
on 27 Mar 2018

See my attached demo to go into folders and subfolders getting filenames.

  3 Comments

thank you for the code... I have matlab 2013... I will try to modify.. thank you so much...
Hi Paul.. below is the code Iam trying ... to get features of images and store it in an excel sheet.. clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
Dirname = uigetdir('C:\matlab2013\Crack\bin\DATABASES','Pick a Directory');
dir_in=(strcat(Dirname,('\')));
file_ext = 'jpg';
listing = dir(strcat(dir_in,'*.',file_ext));
file_names = {listing.name};
num_pages = length(file_names);
numOfDirs=1;
for k=numOfDirs:numOfDirs
for i = 1:num_pages
fprintf('Processing page No: %d\n', i);
% load the image from the directory
I = double(rgb2gray(imresize((imread(strcat(dir_in,file_names{i}))),[256 256])));
% I = double(rgb2gray(imread(strcat(dir_in,file_names{i}))));
[m n]=size(I);
gf=graycomatrix(I);
glcm=graycoprops(gf);
%--------------
Features=zeros(2,4);
Features(2,:)=struct2array(glcm);
label=Dirname(35:end);
clear workspace
%clear(glcm);
filename='G:\matlab2013\Crack\bin\TESTFILE.xlsx';
xlswrite(filename,Features(2,:),['sheet' num2str(k)],['A' num2str(i) ':' 'D' num2str(i)]);
xlswrite(filename,label,['sheet' num2str(k)],['E' num2str(i)]);//this line for labeling the image that which class it belongs
%--------------------
end
%feature.mat=xlsread(filename); %converting features stored in Excel sheet into matrix i.e. .mat file
%display(feature.mat);
end
if I try to label the features... which are extracted for rose images ... that code is storing the label " ROSE" as 'R' in one column, 'O' in another column and so on as shown below... How to make it to get in one column that "E1" cell only plz suggest... thank you..

Sign in to comment.