1

我只想一个一个地遍历一个图像数组,但我无法让它工作,我得到了下面的错误。我可以通过 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

谢谢。

4

2 回答 2

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这是提取单元格元素内容的方法。

于 2012-12-31T23:18:58.387 回答
0

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

因此,当您执行 t(1) 时,您不会获得整个位图,而只会获得一个元素。

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

希望这可以帮助

于 2012-12-31T21:55:26.403 回答