1

画像配列を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のパスにあることを確認するか、画像の場所のフルパスを追加してみてください。すべてのファイル名を含めるには、セル配列を使用することをお勧めします。質問でそれを行った方法は、すべての文字列を1つの長い文字列に連結することです。

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を実行してからしばらく経ちますので、構文を覚えるのに苦労していますが、問題は、ビットマップが2次元配列で構成されており、それを別の配列に配置していることです。

したがって、t(1)を実行すると、ビットマップ全体ではなく、単一の要素のみが取得されます。

まず、MATLABにtの形状を尋ねてみてください。構文は、それがしばらく経っていることを私には理解していません。次に、必要な構文を使用して、必要な2次元行列を抽出します。

お役に立てれば

于 2012-12-31T21:55:26.403 に答える