我只是想逐个迭代一个图像数组,但我无法让它工作,我得到下面的错误。我可以通过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
感谢。
答案 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的形状。语法告诉我它已经有一段时间了。 然后使用所需的语法来提取所需的二维矩阵。
希望这有帮助