欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matlab 使用GUI的一些入门细节

程序员文章站 2022-05-21 22:20:48
...

使用matlab实现一些数字图像算法时候,对于一些超参数调优,如果使用GUI的slider来设置,并同步显示处理结果,会方便很多
在初次使用matlab的GUI时候,需要知道一些提示和用法的小细节

如何建立GUI文件

在matlab的控制台输入 guide, 就会腾出建立gui的窗口
matlab 使用GUI的一些入门细节

matlab 使用GUI的一些入门细节

选择适当的模板,然后就可以进入gui编辑器了

gui文件结构

当设计完GUI窗体口, 会生成一个.m文件,即gui运行文件。
文件中, 主要有几类函数
1.主函数
2.gui初始函数
3.控件回调函数, 例如

% --- Executes on slider movement.
function bias_slider_Callback(hObject, eventdata, handles)
% hObject    handle to bias_slider (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
bias_slider_value = get(hObject,'Value');
set(handles.bias_edit, 'String', num2str(bias_slider_value));

回调函数在控件的事件触发时候执行,比如slider的Value属性的之变化时候

4.控件创建函数, 例如

% --- Executes during object creation, after setting all properties.
function bias_slider_CreateFcn(hObject, eventdata, handles)
% hObject    handle to bias_slider (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

这个函数是设置GUI的,一般GUI可以在GUI编辑器里面设置好,这个函数不用关注。

如何设置全局变量

比如, 窗体中有一张图片,有多个控件的事件需要改动这个图片的一些属性或者做不同的处理,那么, 图片的像素矩阵,就应该是被多个 控件的回调函数可见, 即应该是一个全局变量。

gui文件中, 每个函数都有两个重要的参数, hObject, 和 handles.
handles保存着控件的句柄。
如果要设置全局变量, 只要放到handles这个结构体里面就行

handles.varname = ...   % varname 是要自定义的被多个回调函数可见的变量

但是, 特别要注意, 每次加入一个新的变量, 都要做更新操作

% Update handles structure
guidata(hObject, handles);

如何设置控件间的交互

有两个重要的参考操作

% Hints: get(hObject,'String') returns contents of order_edit as text
%        str2double(get(hObject,'String')) returns contents of order_edit as a double

get()函数和set()函数, 具体用法, 例如

function D0_slider_Callback(hObject, eventdata, handles)
% hObject    handle to D0_slider (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
D0_slider_value = get(hObject,'Value'); %获取 slider的Value属性值
set(handles.D0_edit, 'String', num2str(D0_slider_value)); % 设置D0_edit的String属性值

D0_slider、D0_edit是gui中设置的两个控件

如何创建窗口弹出选择输入图像文件

在gui中创建axes1
创建一个pushbutton
然后在pushbutton的回调函数里面增加如下代码


[filename,pathname] = uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片');
if isequal(filename,0)
    disp('Users Selected Canceled');
else
str = [pathname filename];

handles.img = imread(str);
guidata(hObject, handles);

axes(handles.axes1);%axes1是坐标轴的标示
imshow(handles.img);

保存图像

和选择输入图像文件一样
创建一个pushbutton,
然后在pushbutton的回调函数里面增加如下代码

[filename,pathname]=uiputfile({'*.bmp';},'保存图片','Undefined.bmp');
if ~isequal(filename,0)
    str = [pathname filename];
    px = getframe(handles.axes1);  % handles。axes1是图像所在的axes。
    imwrite(px.cdata, str, 'jpg');
else
    disp('保存失败');
end;
相关标签: matlab gui