我一直试图在浏览它后显示图像。但是,我一直在收到如下错误:在gui中的Matlab显示图像
???引用不存在的字段'axes1'。 Error ==> ImGui> Browse_Callback at 19 axes(handles.axes1) ???错误,同时评估uicontrol回调
我已经尝试使用两个预定义轴[像'axes(handles.axes1);']以及后定义[像'imshow(imgorg,'父',句柄。 axes1);']。不幸的是,这两种技术都不适合我,我一直坚持使用轴。我也尝试制作一个定制的坐标轴并使用它,但它也未能在图上显示我的图像。任何人都可以在我的代码中找出/纠正问题:
function ImGui
f =figure('Visible','on','Position',[460,200,700,385]);
BrowseBt = uicontrol('Style','pushbutton',...
'String','Browse','Position',[600,350,70,25],...
'Callback',@Browse_Callback);
dispnames = uicontrol('Style','text','String','',...
'Position',[50,350,400,20]);
movegui(f,'center');
function Browse_Callback(hObject, eventdata, handles)
handles.output = hObject;
[FileName,PathName] = uigetfile('*.jpg;*.png','Select an image file',...
'C:\Users\owner\Downloads\Conjunctiva\SGRH');
fpname = strcat(PathName,FileName);
dispnames = uicontrol('Style','text','String',fpname,...
'Position',[50,350,400,20]);
imgorg = imread(fpname);
handles.output = hObject;
guidata(hObject, handles);
axes(handles.axes1);
imshow(imgorg);
% ImAxes = axes('Parent', f, ...
% 'Units', 'normalized', ...
% 'position',[50 50 400 250]);
% 'HandleVisibility','callback', ...
% imshow(imgorg, 'Parent', handles.axes1);
% imshow(imgorg, 'Parent', handles.ImAxes);
end
end
谢谢Hoki。有效。需要一个小小的改进,我应该怎么做才能使ImAxes只有在Gui上显示图像时才可见? – Hasan 2014-10-12 11:54:02
@Hasan。我编辑了答案。创建时只需将“visible”属性设置为“off”,然后只在需要时才显示它。 – Hoki 2014-10-12 12:06:41
这太棒了。现在会导致另一个问题:我必须将Browse_Callback函数中读取的图像传递给另一个函数。我试图这样做,我创建另一个按钮,并在其点击后,我必须将图像传递到下一个函数: handles.AnalyzeBt = uicontrol('Style','pushbutton',... 'String ','分析',... 'Callback',@ Analyze_Callback); guidata(hObject,handles); 函数Analyze_Callback(hObject,eventdata,imgorg) handles = guidata(hObject); rim = imgorg(:,:,1); – Hasan 2014-10-12 12:23:40