• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

一个简单的matlab图形界面程序GUI

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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

代码下载

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi中Json格式读写发布时间:2022-07-18
下一篇:
Matlab GUI界面发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap