一个简单的matlab图形界面程序GUIfunction varargout = showGUI(varargin) % SHOWGUI MATLAB code for showGUI.fig % SHOWGUI, by itself, creates a new SHOWGUI or raises the existing % singleton*. % % H = SHOWGUI returns the handle to a new SHOWGUI or the handle to % the existing singleton*. % % SHOWGUI("CALLBACK",hObject,eventData,handles,...) calls the local % function named CALLBACK in SHOWGUI.M with the given input arguments. % % SHOWGUI("Property","Value",...) creates a new SHOWGUI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before showGUI_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to showGUI_OpeningFcn via varargin. % % *See GUI Options on GUIDE"s Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help showGUI% Last Modified by GUIDE v2.5 08-Jun-2013 21:53:16% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct("gui_Name", mfilename, ... "gui_Singleton", gui_Singleton, ... "gui_OpeningFcn", @showGUI_OpeningFcn, ... "gui_OutputFcn", @showGUI_OutputFcn, ... "gui_LayoutFcn", [] , ... "gui_Callback", []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); endif nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDITfunction showGUI_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to showGUI (see VARARGIN)% Choose default command line output for showGUI handles.output = hObject; guidata(hObject, handles);% UIWAIT makes showGUI wait for user response (see UIRESUME) % uiwait(handles.showGUI);% --- Outputs from this function are returned to the command line. function varargout = showGUI_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structure varargout{1} = handles.output;% --- Executes on button press in runBut. function runBut_Callback(hObject, eventdata, handles) % hObject handle to runBut (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) maxRunTime = 10; current_run_no = str2double(get(handles.beginValue, "String")); if (get(handles.rdch, "Value") == get(handles.rdch, "Max")) if runtime_number_check(handles, current_run_no) == 1 current_run_no = mod((current_run_no + 1), maxRunTime); if current_run_no == 0 current_run_no = maxRunTime; end set(handles.beginValue, "String", num2str(current_run_no)); curimno = str2double(get(handles.imgNo, "String")); if imgno_number_check(curimno, handles) ~= -1 gui_contents_update(handles, curimno); end end else running_testfunc(handles); endfunction rdch_Callback(hObject, eventdata, handles) % hObject handle to rdch (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if (get(hObject, "Value") == get(hObject, "Max")) set(hObject, "String", "show test results"); else set(hObject,"String", "show maps results"); end current_no = str2double(get(handles.imgNo,"String")); if imgno_number_check(current_no, handles) == -1 return; else gui_contents_update(handles, current_no); end guidata(hObject, handles);
function beginValue_Callback(hObject, eventdata, handles) % hObject handle to beginValue (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) current_no = str2double(get(handles.imgNo,"String")); if imgno_number_check(current_no, handles) == -1 return; elseif get(handles.rdch, "Value") == get(handles.rdch, "Max") gui_contents_update(handles, current_no); end guidata(hObject, handles);function beginValue_CreateFcn(hObject, eventdata, handles) % hObject handle to beginValue (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called if ispc && isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor")) set(hObject,"BackgroundColor","white"); endfunction endValue_Callback(hObject, eventdata, handles) % hObject handle to endValue (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) function endValue_CreateFcn(hObject, eventdata, handles) % hObject handle to endValue (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called if ispc && isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor")) set(hObject,"BackgroundColor","white"); endfunction sliderImageNo_Callback(hObject, eventdata, handles) % hObject handle to sliderImageNo (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) current = get(hObject,"Value"); current = floor(current); set(handles.imgNo, "String", num2str(current)); gui_contents_update(handles, current); guidata(hObject, handles);% --- Executes during object creation, after setting all properties. function sliderImageNo_CreateFcn(hObject, eventdata, handles) % hObject handle to sliderImageNo (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor")) set(hObject,"BackgroundColor",[.9 .9 .9]); end set(hObject, "Max", handles.sliderImageNo.maxValue); set(hObject, "Min", handles.sliderImageNo.minValue); step = 1/(handles.sliderImageNo.maxValue - handles.sliderImageNo.minValue); set(hObject, "SliderStep", [step, 0.1]); initValue = handles.sliderImageNo.maxValue + ... handles.sliderImageNo.minValue; initValue = floor(initValue/2); set(hObject, "value", initValue); guidata(hObject, handles);
function imgNo_Callback(hObject, eventdata, handles) % hObject handle to imgNo (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) current_no = str2double(get(hObject,"String")); if imgno_number_check(current_no, handles) == -1 return; else gui_contents_update(handles, current_no); end guidata(hObject, handles);
% --- Executes during object creation, after setting all properties. function imgNo_CreateFcn(hObject, eventdata, handles) % hObject handle to imgNo (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called if ispc && isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor")) set(hObject,"BackgroundColor","white"); end initValue = handles.sliderImageNo.maxValue + ... handles.sliderImageNo.minValue; initValue = floor(initValue/2); set(hObject, "String", num2str(initValue)); guidata(hObject, handles);function preBut_Callback(hObject, eventdata, handles) % hObject handle to preBut (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % previous button callback current_no = str2double(get(handles.imgNo,"String")); if imgno_number_check(current_no, handles) == -1 return; elseif imgno_number_check(current_no, handles) == 2 msgbox("At the first image!!","Attention","modal"); else current_no = current_no - 1; end gui_contents_update(handles, current_no); guidata(hObject, handles);function nextBut_Callback(hObject, eventdata, handles) % hObject handle to nextBut (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % next button callback current_no = str2double(get(handles.imgNo,"String")); if imgno_number_check(current_no, handles) == -1 return; elseif imgno_number_check(current_no, handles) == 3 msgbox("At the last image!!","Attention","modal"); else current_no = current_no + 1; end gui_contents_update(handles, current_no); guidata(hObject, handles);% --- Executes on button press in timesRd. function timesRd_Callback(hObject, eventdata, handles) % hObject handle to timesRd (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,"Value") returns toggle state of timesRdfunction showGUI_CreateFcn(hObject, eventdata, handles) % hObject handle to showGUI (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called handles.sliderImageNo.maxValue = 6000; handles.sliderImageNo.minValue = 1; guidata(hObject, handles);function nbs_Callback(hObject, eventdata, handles) % hObject handle to nbs (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) current_no = floor(str2double(get(handles.imgNo,"String"))); if imgno_number_check(current_no, handles) == -1 return; end gui_contents_update(handles, current_no); guidata(hObject, handles);
function nbs_CreateFcn(hObject, eventdata, handles) % hObject handle to nbs (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called if ispc && isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor")) set(hObject,"BackgroundColor","white"); endfunction showGUI_DeleteFcn(hObject, eventdata, handles) % hObject handle to showGUI (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)function sliderObj_Callback(hObject, eventdata, handles) % hObject handle to sliderObj (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) objNo = get(hObject, "Value"); objNo = floor(objNo); set(handles.objNo, "String", num2str(objNo)); current_no = str2double(get(handles.imgNo, "String")); if imgno_number_check(current_no, handles) == -1 return; else gui_contents_update(handles, current_no); end guidata(hObject, handles);function sliderObj_CreateFcn(hObject, eventdata, handles) % hObject handle to sliderObj (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called if isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor")) set(hObject,"BackgroundColor",[.9 .9 .9]); end set(hObject, "Visible", "off"); guidata(hObject, handles);function imageName = gui_get_imageName(no) % get the imagename with order no namelist = ["/home/aborn/research/code/SalDef/dataset/" ... "voc2012imglist.txt"]; fid = fopen(namelist); C = textscan(fid,"%s"); fclose(fid); name = C{1,1}; clear C; imageName = name{no,1}(1,1:end-4);function gui_contents_update(handles, cur_img_no) cur_img_no = floor(cur_img_no); mapsdir = "/media/research/mapsCIKM/maps/"; set(handles.imgNo,"String",num2str(cur_img_no)); set(handles.sliderImageNo, "Value", cur_img_no); imageName = gui_get_imageName(cur_img_no); info = getVOC2012ImgInfo(imageName); imageName = [mapsdir,imageName, ".jpg"];
contents = cellstr(get(handles.nbs, "String")); cur_conts = contents{get(handles.nbs, "Value")}; segmapName = [imageName(1,1:end-4),"_segmap_", cur_conts, ".mat"]; if file_check(segmapName) == -1 return; end load(segmapName); rgbSeg = segmap.rgbSeg; if (get(handles.rdch, "Value") == get(handles.rdch, "Max")) % if the rdch radio button has been chosen, update test results if (gui_contents_update_test(handles, cur_img_no, rgbSeg) == -1) return; end else salmapName = [imageName(1,1:end-4),"_salmap.mat"]; load(salmapName); defmapName = [imageName(1,1:end-4),"_defmap.mat"]; load(defmapName); gui_update_axes(imageName, 11, handles); gui_update_axes(salmap, 21, handles, "im"); gui_update_axes(defmap, 12, handles, "im"); gui_update_axes(rgbSeg, 22, handles, "im");
function st = gui_contents_update_test(handles, cur_img_no, rgbSeg) % if the rdch be chosen % show the test result. objno = floor(get(handles.sliderObj, "Value")); runNo = floor(str2double(get(handles.beginValue, "String"))); if runtime_number_check(handles, runNo) == -1 nmr = 1; set(handles.beginValue, "String", "1"); else nmr = runNo; end set(handles.beginValue, "String", num2str(nmr)); imageName = gui_get_imageName(cur_img_no); info = getVOC2012ImgInfo(imageName); set(handles.sliderObj, "Max", info.objno);
contents = cellstr(get(handles.nbs, "String")); cur_conts = contents{get(handles.nbs, "Value")}; set(handles.sliderObj, "Visible", "off"); testRS = gui_obtain_testRS(imageName, str2num(cur_conts), objno, nmr); if (testRS.st == -1) tmsg = "runing test before this action!"; msg = sprintf("Can not find the image %s
%s", imageName, tmsg); msgbox(msg,"FileReadError", "modal"); st = -1; return; end
function gui_update_axes(imageName, axespos, handles, class) % refresh the axes content using imageName if nargin < 4 class = "image"; end if axespos == 11 axes(handles.axes11); elseif axespos == 12 axes(handles.axes12); elseif axespos == 21 axes(handles.axes21); elseif axespos == 22 axes(handles.axes22); end if strcmp(class,"image") == 1 im = imread(imageName); elseif strcmp(class,"im") == 1 im = imageName; else disp("error in using gui_update_axes"); end imshow(im);
function st = runtime_number_check(handles, no) % check the runtime wether between in [1, 10] if isnan(no) msgbox("You must entry a number value","InputError", "modal"); st = -1; return; elseif no <= 0 || no > 10 msgbox("Input number must between [1,10]!!","Attention","modal"); st = -1; return; else st = 1; return; endfunction st = file_check(filename) % check the file wether exists? if exist(filename, "file") ~= 0 st = 1; else msg = sprintf("% the file: %s does not exist!", filename); msgbox(msg,"FileReadError", "modal"); st = -1; end
function st = imgno_number_check(no, handles) % check the image order whether legal maxValue = get(handles.sliderImageNo, "Max"); minValue = get(handles.sliderImageNo, "Min"); if isnan(no) msgbox("You must entry a number value","InputError", "modal"); st = -1; elseif no <= 0 msgbox("Input number must be positive!!","Attention","modal"); st = -1; elseif no>maxValue msgbox(["Input number exceed the max value (",num2str(maxValue),")!!"],... "Attention","modal"); st = -1; else if (no - 1) == (minValue - 1) st = 2; elseif (no + 1) == (maxValue + 1) st = 3; else st = 1; end endfunction running_testfunc(handles); % running test fuction after we have trained % classify model and segmentations message = ["running command pressed"]; startI = floor(str2double(get(handles.beginValue, "String"))); endI = floor(str2double(get(handles.endValue, "String"))); if imgno_number_check(startI, handles) ~= -1 && ... imgno_number_check(endI, handles) ~= -1 msg = sprintf("%s
i=%d:%d", message, startI, endI); set(handles.msg, "string", msg); else set(handles.msg, "string", message); end界面如下:把上面代码保存到文件:showGUI.m下载这里的showGUI.fig文件,把它们放在同一个目录下运行showGUI.m文件就可以了。我自己用的测试平台为Ubuntu 11.10 linux , matlab 为7.12 -- R2011ashowGUI.fig文件下载:免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /2013年资料/6月/14日/一个简单的matlab图形界面程序GUI