如何在轴gui matlab中读取和显示多个图像

时间:2016-02-04 14:54:46

标签: image matlab matlab-figure display multiple-files

目前我正在开展一个项目,我需要一次读取9张图像,并用matlab gui在9轴上显示它们。 我尝试了一些代码,但它没有用。

[file,folder,FilterIndex] = uigetfile('*.*','MultiSelect','on');

handles.img=cell(1,length(file));

for ifile = 1:length(file)
    filename=fullfile(folder,file(ifile).name);
    image=imread(filename);
    axes(handles.axes{ifile});
    imshow(image);
    handles.img{ifile}=image

end

这是错误消息:

??? Improper index matrix reference.

Error in ==> guikedelaizulfa>open_Callback at 1098
    filename=fullfile(folder,file(ifile).name);

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> guikedelaizulfa at 42
    gui_mainfcn(gui_State, varargin{:});

Error in ==>
@(hObject,eventdata)guikedelaizulfa('open_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

问题在于您使用uigetfile的输出,就好像它与dir的输出相同。 uigetfile的输出只是

[files, folder, filterIndex] = uigetfile('*.*','MultiSelect','on');

如果查看文件的值,您会看到它是一个文件名的单元格数组,而不是就像您正在处理的那样。

disp(files)

如果我们将其用于您当前的代码:

[files, folder, filterIndex] = uigetfile('*.*','MultiSelect','on');

handles.img = cell(1, numel(files));

for ifile = 1:numel(files)
    filename = fullfile(folder, files{ifile});
    img = imread(filename);
    imshow(img, 'Parent', handles.axes{ifile});
    handles.img{ifile} = img;
end

如果您没有轴手柄但只有轴标签,则可以在循环内执行以下操作

ax = findall(gcf, 'type', 'axes', 'tag', sprintf('axes%d', ifile));
imshow(img, 'Parent', ax);