【水果识别】基于matlab GUI 灰度、二值化、腐蚀、膨胀算法水果识别【含Matlab源码 671期】

一、简介

基于matlab GUI 灰度、二值化、腐蚀、直方图处理之水果识别

二、源代码

function varargout = the4th(varargin)
%========filename:the4th.m============%
%=========水果图像的模式识别==12120389==曹嘉=====%
%==========include files:the4th.m===================%
%========================exam.m===================%
%========================exam1.m==================%
%========================do.m=====================%
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @the4th_OpeningFcn, ...
                   'gui_OutputFcn',  @the4th_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 the4th is made visible.
function the4th_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 the4th (see VARARGIN)

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

% Update handles structure
guidata(hObject, handles);

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


% --- Outputs from this function are returned to the command line.
function varargout = the4th_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;


% --------------------------------------------------------------------
function menu_1_Callback(hObject, eventdata, handles)
% hObject    handle to menu_1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global fea testimg mask;



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


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


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


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


% --------------------------------------------------------------------
function menu_6_Callback(hObject, eventdata, handles)
% hObject    handle to menu_6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all properties.


% --------------------------------------------------------------------
function menu_61_Callback(hObject, eventdata, handles)
% hObject    handle to menu_61 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
clear
% 读入样本图像
img1 = imread('梨.jpg');
bwpic = RGB2bw(img1);
samfea(1,:) = get_features(img1, bwpic);
img2 = imread('青椒.jpg');
bwpic = RGB2bw(img2);
samfea(2,:) = get_features(img2, bwpic);
img3 = imread('西红柿.jpg');
bwpic = RGB2bw(img3);
samfea(3,:) = get_features(img3, bwpic);
img4 = imread('香蕉.jpg');
bwpic = RGB2bw(img4);
samfea(4,:) = get_features(img4, bwpic);

%读入测试图像
testimg = imread('test.jpg');
% 测试图像二值化
bwpic = RGB2bw(testimg);
%figure, imshow(testimg)

% 分离各个目标
L = bwlabel(bwpic,4);
mask = zeros(size(bwpic,1),size(bwpic,2), 4);

for i=1:4
	Tmask = zeros(size(bwpic,1),size(bwpic,2));
    [r, c] = find(L==i);
    for j=1:length(r)
        Tmask(r(j), c(j)) = 1;
    end
	%figure, image(Tmask)
	mask(:,:,i) = Tmask;
end

% 特征提取
for i=1:4
    testfea(i,:) = get_features(testimg, mask(:,:,i));
end
name = {
    
    '梨', '青椒', '西红柿', '香蕉'};

% 识别
index = recognition(testfea, samfea);

% 显示结果
%figure
imshow(testimg)

hold on
for i=1:4
    R = regionprops(mask(:,:,i),'boundingbox' );
    Rect = R.BoundingBox;
    if i==3 
    text(Rect(1)+Rect(3),Rect(2), name(index(i)-1))
    else
    text(Rect(1)+Rect(3),Rect(2), name(index(i)))
    end
end


三、运行结果

在这里插入图片描述

四、备注

完整代码或者代写添加QQ 1564658423

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/115387697