从阵列显示图像

时间:2012-12-31 21:21:52

标签: image matlab

我只是想逐个迭代一个图像数组,但我无法让它工作,我得到下面的错误。我可以通过imshow(a)显示单个图像,但不能遍历数组。

使用getImageFromFile时出错(第12行) 找不到指定的文件:“a”。

imageDisplayParseInputs出错(第74行)     [common_args.CData,common_args.Map] = ...

imshow中的错误(第198行)   [common_args,specific_args] = ...

代码

% Images
a = 'redsquare.bmp';
b = 'bluesquare.bmp';
c = 'greysquare.bmp';
d = 'yellowsquare.bmp';

% Array to display
t = [a b c d];

% Loop to display    
for n=1:length(t)
 imshow(t(n))
end

感谢。

2 个答案:

答案 0 :(得分:2)

代码中有几个错误。 首先,验证图像所在的目录是否在Matlab的路径中,或者尝试添加图像位置的完整路径。 我建议使用单元格数组来包含所有文件名。你在问题中完成它的方法是将所有字符串连接到一个长字符串,即

t =

redsquare.bmpbluesquare.bmpgreysquare.bmpyellowsquare.bmp

因此在代码中将t更改为:

t = {a, b, c, d}; % note the curly brackets

在循环中,首先需要在显示图像之前将图像读取到数组,因此添加imread行。将文件读入数组后(我们称之为数组im),您可以使用imshow绘制它。总而言之,循环中的代码应该是:

for n=1:numel(t)
   im=imread(t{n}); 
   imshow(im);
end

再次注意,我使用大括号{}作为imread行,这是提取单元格元素内容的方法。

答案 1 :(得分:0)

有一段时间以来我已经完成了matlab,所以我很难记住语法,但是我很确定你的问题是一个位图是由二维数组组成的,你将它放入另一个数组中。

因此,当你执行t(1)时,你得不到整个位图,只需要一个元素。

首先尝试向matlab询问t的形状。语法告诉我它已经有一段时间了。 然后使用所需的语法来提取所需的二维矩阵。

希望这有帮助