필터 지우기
필터 지우기

Diplay a dialog box when using a wrong callback using images in gui

조회 수: 1 (최근 30일)
Alejandro
Alejandro 2014년 5월 25일
댓글: Alejandro 2014년 6월 2일
I'm still learning how tu use GUI in matlab. i Have a gui that reads an image and display it. Then i have 3 buttons which converts the image into a grayscale image (R, G or B) then, using a slider, i set the threshold for a binary image. Well, when i use the slider without pressing any buttons (r, g or b) i get an error " Reference to non-existent fiel". And that's fine, i know i have to get an error there, but what i want to do is to display an error using waitfor(msgbox('')); when that error occurs. i'm still traying to do that, but i need a little help please.
Well, i want to use this gui when running a certain part from a code in a .mat file. For example. I run the code, read an image, then call the gui, binarize the same image, save the binarized image, and then use that saved image in the original code and continue the code. Hope it makes sense. How can i do this?
Here is the gui
function prueba_gui_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.imagen = imread('G:\Memoria\test\Imagen125.jpg');
axes(handles.axes1);
imshow(handles.imagen);
guidata(hObject, handles);
function varargout = prueba_gui_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function binar_Callback(hObject, eventdata, handles)
handles.output = hObject;
axes(handles.axes1);
tempImg = handles.im;
thresholdValue = get(handles.binar, 'value');
binaryImage = tempImg> thresholdValue;
se = strel('square',4);
w = imdilate(binaryImage,se);
imshow(w);
guidata(hObject,handles);
function binar_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
function RED_Callback(hObject, eventdata, handles)
handles.output = hObject;
axes(handles.axes1);
handles.im = handles.imagen(:,:,1);
imshow(handles.im);
guidata(hObject,handles);
function GREEN_Callback(hObject, eventdata, handles)
handles.output = hObject;
axes(handles.axes1);
handles.im = handles.imagen(:,:,2);
imshow(handles.im);
guidata(hObject,handles);
function BLUE_Callback(hObject, eventdata, handles)
handles.output = hObject;
axes(handles.axes1);
handles.im = handles.imagen(:,:,3);
imshow(handles.im);
guidata(hObject,handles);
% --- Executes on button press in save.
function save_Callback(hObject, eventdata, handles)
handles.output = hObject;
%nothing here yet

채택된 답변

Image Analyst
Image Analyst 2014년 5월 25일
See the FAQ for how to share variables between different functions in your m-file. http://matlab.wikia.com/wiki/FAQ#How_can_I_share_data_between_callback_functions_in_my_GUI.28s.29.3F
  댓글 수: 9
Image Analyst
Image Analyst 2014년 5월 26일
You can save it in a mat file. That's one way listed in the FAQ. Though it's slower because you have to write to disk and read from disk. It's mostly used for passing data between two separate GUIs rather than within functions of the same GUI.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by