【水果识别】基于matlab水果识别系统【源码49期】

一、简介

基于matlab水果识别系统,水果识别是计算机视觉领域中的一个重要应用,其目标是自动识别图像中的水果种类。近年来,随着深度学习和图像处理技术的发展,水果识别技术在农业、食品安全和自动化生产等领域得到了广泛应用。本文将介绍一种基于Matlab的水果识别方法,包括图像导入、预处理、特征提取和分类模型构建等步骤。

二、部分源码

%清空变量
clear
clc
close all;
caitu=imread('2.jpg');%读取图片信息
figure,imshow(caitu);title('原始图像');%显示原始图
huitu=rgb2gray(caitu);%将rgb图转化为灰度图
yuantu=im2double(huitu);%将图片类型数据转化为double类型
figure,imshow(huitu);title('灰度图像');%显示灰度图
erzhi=im2bw(yuantu,graythresh(yuantu));%根据一定的阈值,生成二值图像
figure,imshow(erzhi);title('二值图像');%显示二值图
%消除噪点,经多次腐蚀膨胀操作目的是为平滑边界
se=strel('disk',10);%设置连通域
erzhi=imopen(erzhi,se);%开操作
erzhi=imclose(erzhi,se);%闭操作
figure,imshow(erzhi);title('平滑图像');%平滑处理
%提取彩色区域
%以下为提取水果部分
%以下代码为颜色提取
daxiao=size(caituz);%获取size方便后续提取颜色运算
caituhsv=rgb2hsv(caituz);%将rgb格式转化为hsv格式
%设定阈值来判定某一像素术语何种颜色
huang=0;hong=0;%定义变量存放不同颜色像素数量
for i=1:daxiao(1)
    for j=1:daxiao(2)
    if erzhi(i,j,1)==0&&(caituhsv(i,j,1)>=0.08&&caituhsv(i,j,1)<=0.24)
       huang=huang+1;
    elseif erzhi(i,j,1)==0&&(caituhsv(i,j,1)>=0.92||caituhsv(i,j,1)<=0.08)
        hong=hong+1;
    end
    end
end
%以下为形状特征提取部分

%以下代码为根据特种来判断水果类别
if huang>hong     %根据上面计算,图片中黄色像素点多于红色,则在香蕉和;梨中选择
      if(  yuandu<0.46 )
        %普通对话框
        h=dialog('name','识别结果','position',[700 400 200 70]);
        uicontrol('parent',h,'style','text','string','结果为香蕉!','position',[50 40 120 20],'fontsize',12);
        uicontrol('parent',h,'style','pushbutton','position',...
         [80 10 50 20],'string','确定','callback','delete(gcbf)');
  
    else
         h=dialog('name','识别结果','position',[700 400 200 70]);
        uicontrol('parent',h,'style','text','string','结果为梨!','position',[50 40 120 20],'fontsize',12);
        uicontrol('parent',h,'style','pushbutton','position',...
            [80 10 50 20],'string','确定','callback','delete(gcbf)');
     end
    
else if(  yuandu>0.8 )
        %普通对话框
        h=dialog('name','识别结果','position',[700 400 200 70]);
        uicontrol('parent',h,'style','text','string','结果为苹果!','position',[50 40 120 20],'fontsize',12);
        uicontrol('parent',h,'style','pushbutton','position',...
            [80 10 50 20],'string','确定','callback','delete(gcbf)');
    else
    h=dialog('name','识别结果','position',[700 400 200 70]);
        uicontrol('parent',h,'style','text','string','无法识别!','position',[50 40 120 20],'fontsize',12);
        uicontrol('parent',h,'style','pushbutton','position',...
            [80 10 50 20],'string','确定','callback','delete(gcbf)');
    end
end

三、运行结果

四、matlab版本

MATLAB R2019a

五、学习与交流

文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值