使用matlab对图像进行主体颜色判断

欢迎您的到来!
今天学习了利用matlab对一张图片的颜色主体进行判断并输出颜色

程序要求

  • 从文件读取图片
  • 调用函数裁剪出要判断的图片中小灯的颜色

具体步骤

一、获取并裁剪图片

这里就不具体介绍了,若想了解可以翻看我前面的博文
点击查看前文

二、建立判断函数

程序思路:

1、获取要判断的图像的大小
i=size(picture_2,1);  %i为横轴
j=size(picture_2,2)       %j为纵轴
2、了解RGB的颜色组成

(1)想要判断图片的颜色首先就要了解rgb的组成点击查看RGB颜色对照表
(2)表示出图片(24位位图)的RGB

picture_2(i,j,1); %表示坐标系中(i,j)点的R值
picture_2(i,j,2) ;%表示坐标系中(i,j)点的G值
picture_2(i,j,3) ;%表示坐标系中(i,j)点的B值

(3)应用实例:分别求出图像的RGB图像

picture = 'D:\picture3\2.jpeg';
picture=imread(picture);
picture_1=picture(:,:,1);
picture_2=picture(:,:,2);
picture_3=picture(:,:,3);
subplot(2,2,1);
imshow(picture);
title('RGB');
subplot(2,2,2);
imshow(picture_1);
title('R');
subplot(2,2,3);
imshow(picture_2);
title('G');
subplot(2,2,4);
imshow(picture_3);
title('B');

3、遍历图片求各颜色像素值
for i = 1:size(picture_2,1)for j = 1:size(picture_2,2).....  %处理程序         end
end
4、对各像素值设置阈值
if picture_2(i,j,1)>=200&&picture_2(i,j,2)<=50&&picture_2(i,j,3)<=50          %这里的200 和50可以根据具体情况进行设置red=red+1;
elseif picture_2(i,j,1)>=200&&picture_2(i,j,2)>=200&&picture_2(i,j,3)<=50yellow=yellow+1;
elseif picture_2(i,j,2)>=200&&picture_2(i,j,1)<=100&&picture_2(i,j,3)<=100green=green+1;
end
5、判断各像素值大小
if max(max(red,yellow),green)==redcolor = 'red'
elseif max(max(red,yellow),green)==yellowcolor='yellow'
elseif max(max(red,yellow),green)==greencolor='green'
end

完整代码

1、主函数:
save_path='D:\picture2\';    %获取图片所在位置
img_path_list = dir(strcat(save_path,'*.jpg'));   %依次仅读取文件夹中的.jpg格式图片
img_num=length(img_path_list);      %判断图片个数
for i=1:img_numpicture_name = img_path_list(i).name;        %获取图片的名称picture_1 = imread(strcat(save_path,picture_name));          %建立循环函数依次读取原始图像imshow(picture_1);[x,y]=ginput(2);picture_2 = imcrop(picture_1,[x(1),y(1),abs(x(1)-x(2)),abs(y(1)-y(2))]);imwrite(picture_2,[num2str(i),'.jpg']);detection_color(picture_2);
end
2、判断函数
function jianche = detection_color(picture_2)
red=0;
yellow=0;
green=0;
for i = 1:size(picture_2,1)for j = 1:size(picture_2,2)if picture_2(i,j,1)>=200&&picture_2(i,j,2)<=50&&picture_2(i,j,3)<=50red=red+1;elseif picture_2(i,j,1)>=200&&picture_2(i,j,2)>=200&&picture_2(i,j,3)<=50yellow=yellow+1;elseif picture_2(i,j,2)>=200&&picture_2(i,j,1)<=100&&picture_2(i,j,3)<=100green=green+1;endend
end
if max(max(red,yellow),green)==redcolor = 'red'
elseif max(max(red,yellow),green)==yellowcolor='yellow'
elseif max(max(red,yellow),green)==greencolor='green'
end

我的运行实例:

待检测图片

程序结果

matlab判断图片颜色计算像素值相关推荐

  1. MATLAB图像处理(三):获取图像像素值、改变像素值及像素数

    一.原理 图像由像素组成,imread 函数可读取图像每个像素的RGB值. RGB图的每个像素的像素值一般由三个变量r.g.b组成(0-255). 灰度图的每个像素的像素值一般只有一个值(0-255) ...

  2. (OpenCV+Python)--图片局部区域像素值处理(改进版)

    上一个版本看这里:<Python+OpenCV实现[图片]局部区域像素值处理> 上个版本的代码虽然实现了我需要的功能,但还是走了很多弯路,我意识到图片本就是数组形式,对于8位灰度图,通道数 ...

  3. MATLAB如何根据两个颜色(RGB值)产生任意多个中间的过渡色?

    近期做文章的时候想在两个RGB颜色之间找到N个过渡颜色,进行相应的曲线颜色填充.但是一直没有找到合适的程序,所以按照个人理解简单的写了一下.仅供各位参考,如果不当之处请指正. 原理: 1.两种[R1, ...

  4. 将fer2013转成图片,删选图片后生成新数据集(图像转换成像素值以csv存储)

    前段时间做实验涉及到将fer2013数据集,fer2013数据集中存在一些非人脸,标签错误的图像.为了提高实验准确性,我将fer2013转换成图片,进行筛选删除后,把新的数据集转换成跟fer2013格 ...

  5. matlab修改图片位深度_MATLAB 图像处理

    MATLAB 图像处理 基础 简介 图像类型 灰度图像 二值图像 RGB图像 索引图像 颜色图 colorcube 获取颜色图 colormap 更改颜色图 HSV彩色空间 rgb2hsv 将RGB颜 ...

  6. Android使用svg格式图片,并改变图片颜色

    1.在iconfont网站上下载svg格式图片,iconfont网站地址:iconfont-阿里巴巴矢量图标库,登录后下载 2.Android studio 在drawable文件夹右击,选择New- ...

  7. ImageJ图片显示的颜色和实际像素值相反

    ImageJ图片显示的颜色和实际像素值相反 使用image处理二值图的时候,发现视觉上显示black的实际对应的像素值value=255,而显示white的实际对应的像素值value=0,弄了半天才发 ...

  8. 【Unity】刮刮乐效果(擦除图片像素值)

    实现类似刮刮乐效果,擦除图片指定像素值(修改图片Alfa通道) 参考Unity刮刮乐工程源码的实现原理,对实现方式有一些调整 这里RawImage需要保持原图大小,不能缩放,不然坐标计算会有偏差 us ...

  9. Python3识别判断图片主要颜色并和颜色库进行对比的方法

    [更新]主要提供两种方案: 方案一:(参考网上代码,感觉实用性不是很强)使用PIL截取图像,然后将RGB转为HSV进行判断,统计判断颜色,最后输出RGB值 方案二:使用opencv库函数进行处理.(效 ...

最新文章

  1. linux下怎么修改mysql的字符集编码
  2. ubuntu 关闭qq打不开的终极方法
  3. 最新翻译的官方PyTorch简易入门教程(PyTorch1.0版本)
  4. P1982 小朋友的数字
  5. background 旋转_第4章 旋转的圆弧(《Python趣味创意编程》教学视频)
  6. 年终总结 | 2019年人工智能+计算机视觉+深度学习笔记思维导图汇总
  7. 售价超16万,全球仅限8台!iPhone 13 Pro冬奥会定制版上架,18K黄金打造
  8. OpenShift Security 14 - 使用 RHACS 中的进程基线功能找出在容器中运行的风险操作
  9. java的断点条件,java – 非行依赖的条件断点
  10. 通配符的匹配很全面, 但无法找到元素 'tx:annotation-driven' 的声明
  11. php字符串怎么判断是否相等,php判断两个字符串是否相等
  12. 递归实现将十进制转化为二进制
  13. 捷联惯导系统学习7.1(捷联惯导粗对准 )
  14. 磁盘碎片与闪存摩擦均衡介绍
  15. web表格制作--11.27
  16. JavaScript中的浮点运算
  17. 利用Python取出excel数据并生成统计图
  18. 使用HTML Purifier防止xss攻击
  19. Java EE:第10章初识Spring MVC框架 课后习题
  20. MFC-SaoChat(模仿QQ)聊天软件

热门文章

  1. mysql数据库导入1062_myMySQL数据库 出现1062错误怎么办 MySQL数据库使用教程
  2. 2019年网络广告与人工智能融合现状
  3. linux完全备份 增量备份,完全备份、增量备份与差异备份
  4. 使用Navicat导出表设计(mysql、oracle语句)
  5. Oracle数据库 ALERT语句
  6. Reac全局管理redux
  7. 数据库基础1—函数依赖 多值依赖
  8. 数据库工程师考试自学(7)---函数依赖与多值依赖
  9. 负债后如何调节心理、积极面对生活
  10. dede后台添加优酷等视频iframe链接时被替换成了图片