How can I process multiple image with for loop?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I know that this question was still asked but I didn't find my answer. I want to process multiple images with a for loop when images are open.
What I did:
img1=imread('30.jpg');
img2=imread('25.jpg');
img3=imread('20.jpg');
for i=1:3
imagename=strcat('img',num2str(i))
figure;
imshow(imagename);
end
I check and imagename return img1, img2 and img3. But imshow function can't work with these names and an error occured. Matlab return me:
??? Error using ==> getImageFromFile at 14
Cannot find the specified file: "img1"
Error in ==> imageDisplayParseInputs at 74
[common_args.CData,common_args.Map] = ...
Error in ==> imshow at 199
[common_args,specific_args] = ...
Error in ==> test at 13
imshow(imagename);
I don't understand why have I an error because that they can't find "img1".
If somebody can help me, it will be very nice.
Thank you,
Yoann
0 Kommentare
Antworten (1)
David Young
am 27 Dez. 2014
You are passing a string to imshow, which it interprets as a filename. However, there isn't a file called "img1". If you wish to read all the images into main memory (MATLAB workspace) and then process them, it's best to use a cell array, like this:
img{1}=imread('30.jpg');
img{2}=imread('25.jpg');
img{3}=imread('20.jpg');
for i=1:3
figure;
imshow(img{i});
end
Alternatively you can store the file names as a cell array of strings and read them in one at a time, just before displaying them:
imfile{1}='30.jpg';
imfile{2}='25.jpg';
imfile{3}='20.jpg';
for i=1:3
img = imread(imfile{i});
% process img here if you wish
figure;
imshow(img);
end
I recommend revising MATLAB strings and array types - the introductory documentation is very helpful.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Image Processing Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!