5

フォルダーから Matlab の複数の画像を読み取る際に問題があります。元の名前で読みたいです(マルチバンドであるため、コマンド imread を使用)。画像の名前は「2001_01」「2001_02」のようになっています。これは私のコードです:

myPath= 'C:\images\'; %'
a=dir(fullfile(myPath,'*.tif'));
fileNames={a.name};

その後...

for k = 1:length(fileNames)
    filename = [fileNames(k).name];  
    I = imread(filename);
end

しかし、それは機能せず、それぞれを個別に保存して読み込む方法がわかりません。誰かがどうすればそれを行うことができるか知っていますか? よろしくお願いします。

4

3 に答える 3

6
  1. 最初の問題について:

    しかし、うまくいきません...

    dirの出力を直接fileNames(括弧なしで)に割り当てるだけです:

    fileNames = dir(fullfile(myPath, '*.tif'));
    
  2. 2番目の問題について:

    …保存の仕方がわからず、imreadそれぞれ個別に。

    すべての画像を単一のコレクションに格納するには、セル配列が必要なようです。最初に、適切なサイズになるように cell 配列を定義します。

    C = cell(length(fileNames), 1);
    

    次に、各画像を異なるセルに保存します。

    for k = 1:length(fileNames)
        filename = fileNames(k).name;
        C{k} = imread(filename);
    end
    

    後でcell 配列内の任意のイメージにアクセスするにはC、中かっこ ( {}) を使用します。たとえば、2 番目のイメージには次のようにアクセスしますC{2}

于 2013-04-24T11:28:47.120 に答える
1

完全なファイルパスを返しますか? ファイル名(k).名前? それとも実際のファイル名だけですか?スラッシュも処理して、ファイル名に myPath を追加する必要がある場合があります

fileName = strcat(myPath, fileName)

次に、imread を実行します。一度接触したスラッシュを見たことを確認してください。

于 2013-04-24T11:28:26.930 に答える