在Matlab中读取文件夹上的多个图像

时间:2013-04-24 11:23:57

标签: image matlab file-io

我在从一个文件夹中读取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

但它不起作用,我不知道如何单独保存和imread每一个。有人知道我该怎么办?非常感谢提前,

3 个答案:

答案 0 :(得分:6)

  1. 关于第一个问题:

      

    但它不起作用......

    只需将dir的输出直接分配到fileNames(不带括号):

    fileNames = dir(fullfile(myPath, '*.tif'));
    
  2. 关于第二个问题:

      

    ......我不知道如何单独保存和imread每个人。

    您似乎需要cell array将所有图像存储在单个集合中。首先,将单元格数组定义为具有正确的大小:

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

    然后将每个图像存储到不同的单元格中:

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

    要稍后访问单元格数组C中的任何图像,请使用花括号({})。例如,第二个图像的访问方式如下:C{2}

答案 1 :(得分:2)

而不是

 fileNames={a.name};

尝试

fileNames = arrayfun( @(x) fullfile( myPath, x.name ), a, 'UniformOutput', false );

然后,在循环中,您可以访问k个文件名

I = imread( filenames{k} );

答案 2 :(得分:1)

它是否返回完整的文件路径? fileNames(k).name?或只是实际的文件名?您可能需要使用带有文件名的myPath附加myPath来处理斜杠

fileName = strcat(myPath, fileName)

然后执行imread,确保你已经查看过一次紧缩的斜杠