MATLAB提取RGB三原色及识别形状(圆、三角、方)

三种图形如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MATLAB代码如下

clc
clear
Image=imread('红绿圆.png');
R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3);
figure(1);
subplot(2,2,1),imshow(Image),title('image')
subplot(2,2,2),imshow(R),title('r')%有红则显示白,没有则黑
subplot(2,2,3),imshow(G),title('g')%有绿则白,无则黑
subplot(2,2,4),imshow(B),title('b')%有蓝则白,无则黑
XYR=((R-G)>80&(R-B)>80);
XYG=((G-R)>80&(G-B)>80);
XYB=((B-R)>80&(B-G)>80);
XYY=((R-B)>200&(G-B)>200&(R-B)&(R-G)<30);

sumG=sum(sum(XYG));
sumR=sum(sum(XYR));
sumB=sum(sum(XYB));
sumY=sum(sum(XYY));
if(sumR>sumG&sumR>sumB)
    disp('It is red!');
    MY_Bit_img=XYR;
end
if(sumG>sumR&sumG>sumB)
    disp('It is green!');
    MY_Bit_img=XYG;
end
if(sumB>sumG&sumB>sumR)
    disp('It is blue!');
    MY_Bit_img=XYB;
end
if(sumY>sumR&sumY>sumB&sumY>sumG)
    disp('It is yellow!');
    MY_Bit_img=XYY;
end
sum_l=sum(MY_Bit_img);
sum_r=sum(MY_Bit_img,2);
len_l=max(sum_l);
len_r=max(sum_r);
len=(len_r+len_l)/2;
area=sum(sum_l); 
circle=(3.14*len^2)/4;
square=len_l*len_r;
triangle=1.732*len_l*len_r/4;
a=[circle/area,square/area,triangle/area];
b=[1,1,1];
[value,pos]=min(abs(a-b));
if(pos==1)
    disp('It is circle!');
elseif(pos==2)
    disp('It is square!');
else
    disp('It is triangle!');
end

效果图

红圆
在这里插入图片描述

蓝三角
在这里插入图片描述

绿方
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值