当前位置:首页 » 《我的小黑屋》 » 正文

matlab GUI界面设计

20 人参与  2024年11月08日 09:29  分类 : 《我的小黑屋》  评论

点击全文阅读


【实验内容】

用MATLAB的GUI程序设计一个具备图像边缘检测功能的用户界面,该设计程序有以下基本功能:

(1)图像的读取和保存。

(2)设计图形用户界面,让用户对图像进行彩色图像到灰度图像的转换,并显示原图和灰度图像。

(3)设计图形用户界面,让用户能够根据需要来选择边缘检测算子,即选择边缘检测的方法。

(4)设计图形用户界面,让用户能够自行设定检测的阈值和方向。

(5)显示边缘检测后的图像,并与原图和灰度图像进行对比。

【实验步骤】

1、建立菜单,选项包括“文件”(打开、保存、退出)、“检测方法”(sobel、prewitt、roberts、canny)和“帮助”。

建立3个坐标轴对象,用于显示原始图像、灰度图像和边缘检测后的图像。

建立1个按钮,用于将原始图像转换为灰度图像。

建立1个文本编辑框,用于输入数据。

建立菜单,选项包括“文件”(打开、保存、退出)、“检测方法”(sobel、prewitt、roberts、canny)和“帮助”。

五个静态文本框的string属性分别为“原图”、“灰度图像”、“检测图像”、“设定阈值”和“检测方向”。

三个坐标轴的Tag标识分别为original_image、gray_image、test_image。

按钮控件的string属性为“灰度转换”,Tag标识为rgbtogray。

文本编辑框的Tag标识为thresh_value。

列表框的string属性为horizontal、vertical、both,Tag标识为direction。

编写代码完成程序中的变量赋值、输入、输出等工作,打开对应文件,在对应函数位置添加如下程序,其他代码不变。

function varargout = m240531(varargin)% M240531 MATLAB code for m240531.fig%      M240531, by itself, creates a new M240531 or raises the existing%      singleton*.%%      H = M240531 returns the handle to a new M240531 or the handle to%      the existing singleton*.%%      M240531('CALLBACK',hObject,eventData,handles,...) calls the local%      function named CALLBACK in M240531.M with the given input arguments.%%      M240531('Property','Value',...) creates a new M240531 or raises the%      existing singleton*.  Starting from the left, property value pairs are%      applied to the GUI before m240531_OpeningFcn gets called.  An%      unrecognized property name or invalid value makes property application%      stop.  All inputs are passed to m240531_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 m240531% Last Modified by GUIDE v2.5 31-May-2024 11:43:02% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',       mfilename, ...                   'gui_Singleton',  gui_Singleton, ...                   'gui_OpeningFcn', @m240531_OpeningFcn, ...                   'gui_OutputFcn',  @m240531_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 EDIT% --- Executes just before m240531 is made visible.function m240531_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 m240531 (see VARARGIN)% Choose default command line output for m240531handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes m240531 wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = m240531_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 structurevarargout{1} = handles.output;% --- Executes on button press in rgbtogray.function rgbtogray_Callback(hObject, eventdata, handles)% hObject    handle to rgbtogray (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)gray=rgb2gray(handles.img)set(handles.gray_image, 'HandleVisibility', 'ON');axes(handles.gray_image)imshow(gray);handles.img=gray;guidata(hObject,handles);function thresh_value_Callback(hObject, eventdata, handles)% hObject    handle to thresh_value (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,'String') returns contents of thresh_value as text%        str2double(get(hObject,'String')) returns contents of thresh_value as a double% --- Executes during object creation, after setting all properties.function thresh_value_CreateFcn(hObject, eventdata, handles)% hObject    handle to thresh_value (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.%       See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor','white');end% --- Executes on selection change in direction.function direction_Callback(hObject, eventdata, handles)% hObject    handle to direction (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Hints: contents = cellstr(get(hObject,'String')) returns direction contents as cell array%        contents{get(hObject,'Value')} returns selected item from direction% --- Executes during object creation, after setting all properties.function direction_CreateFcn(hObject, eventdata, handles)% hObject    handle to direction (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.%       See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor','white');end% --------------------------------------------------------------------function Untitled_1_Callback(hObject, eventdata, handles)% hObject    handle to Untitled_1 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% --------------------------------------------------------------------function Untitled_2_Callback(hObject, eventdata, handles)% hObject    handle to Untitled_2 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% --------------------------------------------------------------------function Untitled_3_Callback(hObject, eventdata, handles)% hObject    handle to Untitled_3 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% --------------------------------------------------------------------function Sobel_Callback(hObject, eventdata, handles)% hObject    handle to Sobel (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)v1=str2double(get(handles.thresh_value, 'string' ));contents=get(handles.direction,'string');v2=contents{(get(handles.direction,'value'))};edge_sobel=edge(handles.img,'sobel',v1,v2);set(handles.test_image, 'HandleVisibility','ON');axes(handles.test_image);imshow(edge_sobel)handles.img=edge_sobel;guidata(hObject,handles);% --------------------------------------------------------------------function Prewitt_Callback(hObject, eventdata, handles)% hObject    handle to Prewitt (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)v1=str2double(get(handles.thresh_value,'string'))contents=get(handles.direction, 'string');v2=contents{(get(handles.direction,'value' ))};edge_prewitt=edge(handles.img, 'prewitt' ,v1,v2);set(handles.test_image, 'HandleVisibility','ON');axes(handles.test_image);imshow(edge_prewitt)handles.img=edge_prewitt;guidata(hObject,handles);% --------------------------------------------------------------------function Roberts_Callback(hObject, eventdata, handles)% hObject    handle to Roberts (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)v1=str2double(get(handles.thresh_value,'string'))contents=get(handles.direction, 'string');v2=contents{(get(handles.direction,'value'))};edge_roberts=edge(handles.img, 'roberts' ,v1,v2);set(handles.test_image, 'HandleVisibility','ON');axes(handles.test_image);imshow(edge_roberts)handles.img=edge_roberts;guidata(hObject,handles);% --------------------------------------------------------------------function Canny_Callback(hObject, eventdata, handles)% hObject    handle to Canny (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)v1=str2double(get(handles.thresh_value, 'string'));contents=get(handles.direction,'string');v2=contents{(get(handles.direction,'value'))};edge_canny=edge(handles.img,'canny',v1, v2);set(handles.test_image, 'HandleVisibility','ON');axes(handles.test_image);imshow(edge_canny);handles.img=edge_canny;guidata(hObject,handles);% --------------------------------------------------------------------function open_Callback(hObject, eventdata, handles)% hObject    handle to open (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)[filename,pathname] = uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像');if isequal(filename,0) || isequal(pathname,0)    errordlg('没有选中文件','出错');    return;else    file=[pathname,filename];    global S    S=file;    x=imread(file);    set(handles.original_image,'HandleVisibility','ON');    axes(handles.original_image);    imshow(x);    handles.img=x;    guidata(hObject,handles);end% --------------------------------------------------------------------function save_Callback(hObject, eventdata, handles)% hObject    handle to save (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)[sfilename,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'}, ...    '保存图像文件','untitled.jpg');if ~isequal([sfilename,sfilepath],[0,0])    sfileullname = [sfilepath,sfilename];    imwrite(handles.img, sfilefullname);else    msgbox('你按了取消键','保存失败');end% --------------------------------------------------------------------function exit_Callback(hObject, eventdata, handles)% hObject    handle to exit (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)
执行程序后,单击菜单栏中的文件,打开图片,在原图位置会显示彩色图像,单击“灰度转换”按钮,在灰度图像位置会显示转换后的灰度图像,在“设定阈值”框输入0.1,选择“检测方向”为both,再在“检测方法”菜单中选择Canny,即可在“检测图像”的位置显示边缘检测后的图像,最后在“文件”菜单中选择“保存”,即可保存最终分割后的边缘检测图。

 


点击全文阅读


本文链接:http://zhangshiyu.com/post/183964.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1