matlab 使用GUI的一些入门细节
使用matlab实现一些数字图像算法时候,对于一些超参数调优,如果使用GUI的slider来设置,并同步显示处理结果,会方便很多
在初次使用matlab的GUI时候,需要知道一些提示和用法的小细节
如何建立GUI文件
在matlab的控制台输入 guide, 就会腾出建立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;
上一篇: 慢性牙周炎如何治疗