[英]Matlab show image in gui
我一直在嘗試瀏覽后顯示圖像。 但是,我一直得到類似以下錯誤:
??? 引用不存在的字段“ axes1”。 錯誤==> ImGui> 19根軸上的瀏覽回調(handles.axes1)??? 評估uicontrol回調時出錯
我曾嘗試使用兩個預定義的軸[例如'axes(handles.axes1);']和后期定義的[例如'imshow(imgorg,'Parent',handles.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
使用guidata函數。
並重新整理一下代碼
您定義所有的uicontrols(按鈕,文本框,軸等),然后將它們的句柄分配給結構(在此稱為handles
)。 然后,在完全定義GUI時,調用guidata
將此句柄結構存儲在任何回調都可以訪問它的地方。
然后,在回調函數中,再次調用guidata
來檢索此句柄結構並訪問對象(軸和文本框)。
function ImGui
f =figure('Visible','on','Position',[460,200,700,385]);
handles.BrowseBt = uicontrol('Style','pushbutton',...
'String','Browse','Position',[600,350,70,25],...
'Callback',@Browse_Callback);
handles.dispnames = uicontrol('Style','text','String','',...
'Position',[50,350,400,20]);
handles.ImAxes = axes('Parent', f, ...
'Units', 'pixels', ...
'position',[30 30 640 300],...
'visible','off');
movegui(f,'center');
guidata(f,handles) ;
function Browse_Callback(hObject, eventdata)
handles = guidata(hObject);
[FileName,PathName] = uigetfile('*.jpg;*.png','Select an image file');
fpname = strcat(PathName,FileName);
imgorg = imread(fpname);
set(handles.dispnames,'String',FileName)
set(handles.ImAxes,'visible','on') ;
imshow(imgorg, 'Parent', handles.ImAxes);
guidata(hObject, handles);
end
end
在這種特定情況下,您實際上並不需要在回調結束時再次調用guidata
再次存儲值,但這是一個很好的做法,以防萬一您修改了一些想要保存的更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.