how to read images form folders directory

hi, how to reasd images , say '*.png' images from folders in directory and produce output same as folder name.

 Risposta accettata

So each sub-folder contains only 1 file (a .png file)?
The code below puts the results in the structure Images.foldername
D = dir(directory_name);
D(1:2)=[];
D(~D.isdir)=[];
for i=1:length(D)
foldername=D(i).name;
pth=[directory_name pathsep foldername]);
files=dir(pth);
files(files.isdir)=[];
for j=1:length(files)
[p,n,e]=fileparts(files.name(j));
if strcmp(e,'.png')
Images.(foldername)=imread(files.name(j));
break;
end
end
end

11 Commenti

ermmm, more than 0ne image. what is the meaning of pathsep? [p,n,e] represents which output?thanks for spending your time making the code. cheers T
PATHSEP is a command which generates the symbol '/' or '\' used by your OS to specify directory paths.
As for [p,n,e] see the help documentation for the FILEPARTS command for the best explanation.
If each folder contains more than 1 image, you cannot name both images with the folder name. Each image has to have a separate name.
Matt J, yesterday, I'd used this D(~D.isdir)=[]; syntax, but it doesn't work. why is that? pls advice. thanks.
You don't need to worry about that if you just ask for *.png files in the dir() command.
D = dir(fullfile(directory_name, '*.png'))
what abt this pth=[directory_name pathsep foldername]); and files(files.isdir)=[]; what is the meaning of isdir.files. does it correct syntax?
Like I said, you don't even need to worry about that. But in general, isdir is a flag stating whether the file is a folder (directory). And setting some element = to [] means that you are removing it from the array.
Tulips
Tulips il 22 Ott 2012
Modificato: Tulips il 22 Ott 2012
D = dir(directory_name);
D(1:2)=[];
D(~D.isdir)=[];
for i=1:length(D)
foldername=D(i).name;
pth=[directory_name pathsep foldername]);
files=dir(pth);
files(files.isdir)=[];
for j=1:length(files)
[p,n,e]=fileparts(files.name(j));
if strcmp(e,'.png')
Images.(foldername)=imread(files.name(j));
break;
end
end
end
sir can you give the correct syntax instead of the above code.
what is the correct syntax for isdir actually?many thanks!
Image Analyst
Image Analyst il 22 Ott 2012
Modificato: Image Analyst il 22 Ott 2012
I wouldn't even do it that way. I'd follow the FAQ. But perhaps I don't know what you mean by " produce output same as folder name". Can you explain exactly what does that mean? What is the output? Is it a variable, an Excel workbook, a new image file, a structure like Matt suggested, what??????? I have no idea.
In a folder there have 24 images which in *.png extension with each of them consists of 20x20 dimensions. for the recognition part, it recognize, like this Input is apple.png The output is 2.png '2.png' is referred to as one of 24 images that have been recognized. The problem is how can I create folders and subfolders that represents different type of fruit that each of them consist of 5 images inside it. So that, when the sytem recoznize (2.png) it shows that the output is referred to apple from the folder of different fruits I created. Anyone?
See comment in my answer.

Accedi per commentare.

Più risposte (2)

Image Analyst
Image Analyst il 22 Ott 2012
Modificato: Image Analyst il 22 Ott 2012
You may be interested in the FAQ http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F which has several code examples.
OK, that's totally different. You need a function called "ClassifyFruit" that takes an image and then returns the class number 1-5 depending on whether it's an apple, banana, peach, etc. Then use sprintf() to create the folder name, and mkdir to create it if you don't have it. Then create the full filename with sprintf and use imwrite to copy the image to that folder.

1 Commento

how to create a ClassifyFruit function.can u give hint or idea on this?

Accedi per commentare.

sawsan mahmood
sawsan mahmood il 21 Apr 2016
hi , please I need help I have database of iris segmentation a folder contain 241 subfolders (named from 1 to 241) each of them contain 5 images (named from Img_1_1_1 to Img_1_1_5)and second subfolder's image named (Img_2_1_1 to Img_2_1_5) and so on ,please I need code to read the first image only from each subfolder and make same processing to them thanks

1 Commento

See my attached code. Change the file pattern to Img_1_1_1 and it will work.

Accedi per commentare.

Categorie

Community Treasure Hunt

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

Start Hunting!

Translated by