如何在轴GUI MATLAB中读取和显示多个图像



目前我正在做一个项目,我需要一次读取 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

谢谢你的帮助

问题是您使用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);

最新更新