基于MATLAB GUI的系统设计(四)

接下来学习的是关于图像处理方面的知识。

实例一: 对图像进行灰度处理、直方图均衡化处理、二值处理以及用Canny算子对图像进行边缘检测。

第一步:GUIDE画界面。在这里插入图片描述
第二步:编辑代码。

function varargout = tuxiangchuli(varargin)
% TUXIANGCHULI MATLAB code for tuxiangchuli.fig
%      TUXIANGCHULI, by itself, creates a new TUXIANGCHULI or raises the existing
%      singleton*.
%
%      H = TUXIANGCHULI returns the handle to a new TUXIANGCHULI or the handle to
%      the existing singleton*.
%
%      TUXIANGCHULI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in TUXIANGCHULI.M with the given input arguments.
%
%      TUXIANGCHULI('Property','Value',...) creates a new TUXIANGCHULI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before tuxiangchuli_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to tuxiangchuli_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 tuxiangchuli

% Last Modified by GUIDE v2.5 31-Jul-2019 19:53:55

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @tuxiangchuli_OpeningFcn, ...
                   'gui_OutputFcn',  @tuxiangchuli_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

% --- Executes just before tuxiangchuli is made visible.
function tuxiangchuli_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 tuxiangchuli (see VARARGIN)

% Choose default command line output for tuxiangchuli
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes tuxiangchuli wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = tuxiangchuli_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 open.
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({'*.bmp;*.jpg;*.png;*.jpeg;*.tif;*.gif;*.Image files'},'载入图像');%选择路径打开图像
if isequal(filename,0)||isequal(pathname,0) %若filename为0或pathname为0,即未选中文件
    errordlg('未选中文件','警告'); %建立一个名为警告的错误对话框,内容为“未选中文件”
    return;
end
str=[pathname,filename]; %将文件名和目录名组合成一个完整的路径
x=imread(str); %读入图像
axes(handles.axes1); %定义图形区域axes1
imshow(x); %显示图像
handles.img=x; %把图像发给handles.img
guidata(hObject,handles); %把handles句柄更新

% --- Executes on button press in save.
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)
[FileName,PathName] = uiputfile({'*.jpg','JPEG(*.jpg)';'*.bmp','Bitmap(*.bmp)';'*.gif','GIF(*.gif)';'*.*', 'All Files (*.*)'},'Save Picture','Untitled');
if FileName==0
    return;
else
    h=getframe(handles.axes2);
    imwrite(h.cdata,[PathName,FileName]);
end

% --- Executes on button press in exit.
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)
clc         %清除指令窗
close all   %关闭所有句柄可见的窗口
close(gcf)  %关闭当前窗口
clear       %清除内存变量和函数

% --- Executes on button press in Rgb2gray.
function Rgb2gray_Callback(hObject, eventdata, handles)
% hObject    handle to Rgb2gray (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.axes2);     %定义图形区域axes2
x=rgb2gray(handles.img); %利用rgb2gray函数对源图像进行灰度处理
imshow(x);               %显示图像
xlabel('灰度图像');       %x轴名为“灰度图像”
guidata(hObject,handles);%把handles句柄更新

% --- Executes on button press in zhifangtu.
function zhifangtu_Callback(hObject, eventdata, handles)
% hObject    handle to zhifangtu (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
x=rgb2gray(handles.img); %对图像进行灰度处理
h=histeq(x);             %对图像进行直方图均衡化处理
axes(handles.axes2);     %定义图形区域axes2
imshow(h);               %显示图像
xlabel('直方图均衡化后的图像');      
guidata(hObject,handles);   %把handles句柄更新

% --- Executes on button press in erzhi.
function erzhi_Callback(hObject, eventdata, handles)
% hObject    handle to erzhi (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.axes2);     %定义图形区域axes2
BW=im2bw(handles.img);   %将图像转化为二值图像
imshow(BW);               %显示二值图像
xlabel('二值图像');   
guidata(hObject,handles); %把handles句柄更新

% --- Executes on button press in canny.
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)
I=im2bw(handles.img);
BW1=edge(I,'canny'); %用canny算子进行边缘检测
path1='E:\MATLAB\R2018a\bin\'; 
name='用canny算子进行边缘检测的图片.jpg';
imwrite(BW1,[path1 name]);
str1=[path1 name];  
im1=imread(str1);  
axes(handles.axes2);  
imshow(im1);  %显示边缘检测图像
xlabel('边缘检测图像');   
guidata(hObject,handles); %把handles句柄更新

第三步:运行。在这里插入图片描述
第四步:在完成GUI界面创建后,对所创建界面的效果进行试验。点击“打开图片”按钮在文件夹中选择一张需要处理的图像,分别点击“边缘检测”、“灰度处理”、“直方图均衡化处理”、“二值处理”按钮可以在右边画布中得到相应处理后的图像,点击“保存图片”按钮可以保存右边画布中得到的图像,点击“退出”按钮可以退出界面。

  • 边缘检测在这里插入图片描述
  • 灰度处理在这里插入图片描述
  • 直方图均衡化处理在这里插入图片描述
  • 二值处理在这里插入图片描述
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值