function 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}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT function 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); end function 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\'); end function 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\'); end function 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 timesRd function 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\'); end function 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\'); set(handles.percent, \'String\', \'\'); set(handles.objNo, \'String\', \'\'); set(handles.sliderObj, \'Visible\', \'off\'); set(handles.currentMsg, \'String\', \'\'); change_objdet_panel(handles, \'maps\'); gui_update_names(handles, \'maps\'); end gui_update_msg(cur_img_no, handles); 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 \n %s\', imageName, tmsg); msgbox(msg,\'FileReadError\', \'modal\'); st = -1; return; end maxV = get(handles.sliderObj, \'Max\'); minV = get(handles.sliderObj, \'Min\'); if maxV > minV set(handles.sliderObj, \'Visible\', \'on\'); step = 1/(maxV-minV); set(handles.sliderObj, \'SliderStep\', [step, 0.1]); elseif maxV == minV set(handles.sliderObj, \'Visible\', \'off\'); end if objno > maxV set(handles.sliderObj, \'Value\', minV); objno = minV; end gui_update_axes(rgbSeg, 11, handles, \'im\'); gui_update_axes(testRS.resIM, 12, handles, \'im\'); gui_update_axes(testRS.labIM, 21, handles, \'im\'); gui_update_axes(testRS.reslabIM, 22, handles, \'im\'); set(handles.percent, \'String\', num2str(testRS.percent)); objNo = floor(get(handles.sliderObj,\'Value\')); set(handles.objNo, \'String\', num2str(objNo)); curMsg = sprintf(\'obj_%d:%s run_%d nbs_%s\',objNo, ... info.obj(objNo).class, nmr, cur_conts); set(handles.currentMsg, \'String\', curMsg); change_objdet_panel(handles, \'test\'); gui_update_names(handles, \'test\'); st = 1; function gui_update_msg(current_no, handles) % update the meg content % set(handles.msg, \'string\', message); imageName = gui_get_imageName(current_no); info = getVOC2012ImgInfo(imageName); msg = info.fname; msg = sprintf(\'%s\nits has %d objects:\', msg, info.objno); msgObj = \'\'; for i=1:info.objno msgObj = sprintf(\'%sobj_%d:%s\n\', msgObj, i, info.obj(i).class); end msg = sprintf(\'%s\n%s\', msg, msgObj); set(handles.msg, \'String\', msg); function change_objdet_panel(handles, tag) % change object detection panel title content if strcmp(tag, \'test\') == 1 set(handles.objdet, \'Title\', \'running time select\'); set(handles.textBeginEnd, \'String\', \'run_i\'); set(handles.endValue, \'Visible\', \'off\'); set(handles.runBut, \'String\', \' next_i\'); elseif strcmp(tag, \'maps\') == 1 set(handles.objdet, \'Title\', \'object detection\'); set(handles.textBeginEnd, \'String\', \' begin : end\'); set(handles.endValue, \'Visible\', \'on\'); set(handles.runBut, \'String\', \'run\'); set(handles.beginValue, \'String\', \'1\'); set(handles.endValue,\'String\',\'1\'); end function gui_update_names(handles, tag) if strcmp(tag, \'test\') == 1 set(handles.name11, \'String\', \'setment map\'); set(handles.name12, \'String\', \'object detection result\'); set(handles.name21, \'String\', \'human label information\'); set(handles.name22, \'String\', \'label and detection res.\'); elseif strcmp(tag, \'maps\') == 1 set(handles.name11, \'String\', \'origin image\'); set(handles.name12, \'String\', \'defocus map\'); set(handles.name21, \'String\', \'saliency map\'); set(handles.name22, \'String\', \'segment map\'); 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; end function 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 end function 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\n 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 -- R2011a
请发表评论