imshow command will not display my images

29 visualizaciones (últimos 30 días)
Kyle Davis
Kyle Davis el 29 de En. de 2019
Editada: Stephen23 el 29 de En. de 2019
Hi all, I am currently trying to randomly present 21 images, one after the other, all located within the same folder. When I run my code, Matlab does not display any errors, but no images are shown either. I currently have the following code;
dirname= 'C:\Users\User\Documents\MATLAB\stimuli\';
d=dir([dirname '*.jpg']);
for i= randperm(numel(d))
imshow(d(i).name)
pause(2);
end

Respuestas (3)

KSSV
KSSV el 29 de En. de 2019
d=dir([dirname '*.jpg']);
for i= randperm(numel(d))
I = imread(d(i).name) ;
imshow(I)
pause(2);
end
  1 comentario
Stephen23
Stephen23 el 29 de En. de 2019
Editada: Stephen23 el 29 de En. de 2019
Note that imshow accepts a filename as its first inpout argument. Using another image display function does not resolve the actual issue with the code in the question (the missing path).

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 29 de En. de 2019
dirname= 'C:\Users\User\Documents\MATLAB\stimuli\';
d=dir(fullfile(dirname, '*.jpg'));
for i = randperm(numel(d))
imshow( fullfile(dirname, d(i).name) )
pause(2);
end

Stephen23
Stephen23 el 29 de En. de 2019
Editada: Stephen23 el 29 de En. de 2019
The reason is very simple: you forgot to use the path when you tried to read the file:
D = 'C:\Users\User\Documents\MATLAB\stimuli';
S = dir(fullfile(D,'*.jpg'));
for k = randperm(numel(S))
imshow(fullfile(D,S(k).name))
pause(2);
end
Note that it is recommended to avoid using i for a loop iterator, as this is the name of the imaginary unit. Using fullfile is recommended instead of string concatenation:

Categorías

Más información sobre Image Processing Toolbox en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by