opencv--颜色识别

news2024/9/23 5:23:29

目录

一、主要函数介绍

 二、颜色识别

 三、其他相关函数介绍

1. cv2.resize

2. np.array(x,dtype)

         3. cv2.inRange()

4. cv2.imshow()

5.cv2. waitKey()

四、掩膜


一、主要函数介绍

通常,相机在RGB颜色模式下工作,但这种模式受到光线的影响较大,所以在opencv中,用HSV(色彩、饱和度、亮度)模型对颜色进行定义。

除此之外,opencv中有多种色彩空间,包括 RGB、HSI、HSL、HSV、HSB、YCrCb、CIE XYZ、CIE Lab8种,使用中经常要遇到色彩空间的转化。

可以使用opencv中cv2.cvtColor()函数来改变图像的颜色空间,该函数形式为:

                                                cv2.cvtColor(frame,flag)

参数介绍:

@frame    为要进行处理的图片;

@flag       为要进行的色彩转换方式;

对于BGR<-->Gray的转换,我们用的flag就是cv2.COLOR_BGR2GRAY

对于BGR<-->HSV的转换,我们用的flag就是cv2.COLOR_BGR2HSV

 二、颜色识别

我们对于颜色的转换主要是通过BGR<-->HSV的形式,所以我们进行颜色识别之前,还是要首先获取RGB的数值,该数值可以用Inkscape工具进行抓取。 

Draw Freely | InkscapeInkscape is professional quality vector graphics software which runs on Linux, Mac OS X and Windows desktop computers.https://inkscape.org/Inkscape工具官网:Draw Freely | Inkscape

我们通过命令窗口,输入命令和BGR的值,就可以得到HSV的上下范围值。然后打开colorDetection.py文件,我们把得到的上下范围值数据更改一下,

lower_range = np.array([24, 100, 100], dtype=np.uint8)
upper_range = np.array([44, 255, 255], dtype=np.uint8)

 三、其他相关函数介绍

1. cv2.resize

img = cv2.resize(img, (0,0), fx=0.2, fy=0.2)

该函数是opencv库中的一个函数,主要起到对图片进行缩放的作用

参数介绍:

resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )

  InputArray src :输入,原图像,即待改变大小的图像;

  OutputArray dst:输出,改变后的图像。这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;

  dsize:输出图像的大小,将原图片转化为宽和长分别为x,y的图片

  fx和fy是图像width方向和height方向的缩放比例。

  fx:width方向的缩放比例

  fy:height方向的缩放比例

  如果fx=0.2,fy=0.2,则将原图片的x轴缩小为原来的0.2倍,将y轴缩小为原来的0.2倍

  interpolation(插值):这个是指定插值的方式,图像缩放之后,肯定像素要进行重新计算的,就靠这个参数来指定重新计算像素的方式,有以下几种:

  INTER_NEAREST - 最邻近插值

  INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法

  INTER_CUBIC - 4x4像素邻域内的双立方插值

  INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值

更详细的介绍可以看这篇博客:

cv2.resize()原理详解_AI bro的博客-CSDN博客_cv2.resize

2. np.array(x,dtype)

将x转化为一个类型为type的数组

3. cv2.inRange()

作用:通过设置阈值,去除背景部分

mask = cv2.inRange(hsv, lower_range, upper_range)

  第一个参数:hsv指的是原图

  第二个参数:lower_range,指的是图像中低于这个lower_range的值,图像值变为0

  第三个参数:upper_range指的是图像中高于这个upper_range的值,图像值变为0

  而在lower_range~upper_range之间的值变成255。

4. cv2.imshow()

作用:在窗口中显示图像。该窗口和图像的原始大小自适应(自动调整到原始尺寸)。

第一个参数是一个窗口名称(也就是我们对话框的名称),它是一个字符串类型。第二个参数是我们的图像。您可以创建任意数量的窗口,但必须使用不同的窗口名称。

cv2.imshow('mask',mask)
cv2.imshow('image', img)

5.cv2. waitKey()

功能是等待用户的按键响应(可以不断刷新图像),频率时间为delay,单位为ms 返回值为当前键盘按键值。如果用户没有按下键,则继续等待(循环)

常见:设置waitKey(0),则表示程序会无限制的等待用户的按键事件。

if cv2.waitKey(100)==27:

#特定的100ms print('wait 100 ms')

等待用户触发事件,等待时间为100ms,如果在这个时间段内,用户按下ESC(ASCII码为27),执行 if体如果没有按,if函数不做处理

waitKey()函数与imshow()函数之间的关系:

在使用中,imshow函数后面通常都会跟着waitKey 函数。waitKey控制着imshow的持续时间,当imshow之后不跟waitKey时,相当于没有给imshow提供时间展示图像,所以只有一个空窗口一闪而过。添加了waitKey后,图像将会有一个显示的时间,而不会一闪而过。

更详细的介绍可以看这篇博客:

https://blog.csdn.net/chengfenglee/article/details/112251358

运行之后就可以得到图片掩膜处理之后的图像。也就是说我们要找的黄色已经被找到并且做了处理。

四、掩膜

掩膜主要用于:

①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。例如,我们要检测一幅图像中眼睛的位置,我们首先要在图像中找到脸,再在脸的区域中找到眼睛,而不是直接在一幅图像中搜索。

②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。

③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。

④特殊形状图像的制作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/133477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年终总结-知识沉淀、疫情、展望未来

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

GIS算法

目录 简介 GIS标准简介 空间数据模型 3.1 WKT与GeoJSON 3.2 WKB格式 GIS算法三方包 简介 地理信息系统(简称GIS),以数字化的形式反映人类社会赖以生存的地球空间的现势和变迁的各种空间数据以及描述这些空间数据特征的属性,支持空间数据及其属性数据的输入/输出,存储,显…

postgresql数据库主备安装,备份还原

一.postgresql数据库安装 1.下载软件包 地址&#xff1a;PostgreSQL: File Browser 2.解压安装 [rootpostgresql u01]# tar -zxf postgresql-14.2.tar.gz安装环境 yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel op…

小说阅读 (支持txt文本文件浏览)

小说阅读2022 - 界面 2023年1月2日 更新 1、修复BUG。。。 2、优化运行。。。 3、添加了 【[阅读笔记] - 可以在章节处填写阅读笔记保存&#xff0c;程序会自动记录位置坐标&#xff0c;每次在读到本章节保存位置坐标时右上角会自动跳出提示图标&#xff0c;点击提示图标即可…

SAP FICO付款及清账

付款及清账 在SAP中&#xff0c;处理付款要达到两个效果&#xff1a; 实现会计凭证的处理&#xff1b; 实现清账&#xff08;将付款与应付账款对应核销&#xff09;&#xff1b; 可以边付边清&#xff0c;也可以先付后清。 一、付款并清账 企业的付款一般有现金付款、银行存款…

Gem5模拟器,全流程运行Chiplet-Gem5-SharedMemory-main(十)

小白入门&#xff0c;跑着个代码头都给我跑秃了&#xff0c;文档说不详细吧似乎啥都和你说了&#xff0c;说它详细吧&#xff0c;看了几遍也跑不出来。记录一下我遇到的问题&#xff1a; 目录 一、确定待执行的程序 &#xff08;1&#xff09;那些年的undefined reference &…

(3分钟速通)Visual Odometry的特征点法和直接法

光流法&#xff1a;(https://zhuanlan.zhihu.com/p/537113460) ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ​ 编辑切换为居中 添加图…

【免费开放源码】审批类小程序项目实战(预约历史页面)

第一节&#xff1a;什么构成了微信小程序、创建一个自己的小程序 第二节&#xff1a;微信开发者工具使用教程 第三节&#xff1a;深入了解并掌握小程序核心组件 第四节&#xff1a;初始化云函数和数据库 第五节&#xff1a;云数据库的增删改查 第六节&#xff1a;项目大纲以及制…

Vue与React分别实现登录拦截【详细例子+讲解】

文章标题一、Vue实现登录拦截1-1、 效果展示1-2 代码展示1-2-1 router.js1-2-2 store文件夹下1-2-2-1 state.js1-2-2-2 index.js1-2-2-3 mutation.js1-2-3 main.js【实现登录拦截的关键---全局路由守卫】1-2-4 pages下的login.vue1-3 总结二、 Vue项目功能简介2-1 功能2-2 查看…

基于RBAC模型的权限控制的一整套基础开发平台,前后端分离,后端django,前端 vue+ElementUI

Django-Vue-Admin 完整代码下载地址&#xff1a;基于RBAC模型的权限控制的一整套基础开发平台 &#x1f4a1; 「关于」 我们是一群热爱代码的青年&#xff0c;在这个炙热的时代下&#xff0c;我们希望静下心来通过Code带来一点我们的色彩和颜色。 因为热爱&#xff0c;所以…

TensorFlow之过拟合与欠拟合-1

1 基本概念 过度拟合&#xff08;overfit&#xff09; 创建的模型与用于该模型的训练数据之间发生过于密切的关系&#xff0c;从而引起该模型无法对新数据进行准确的预测。正则化&#xff08;Regularization&#xff09;策略可以减少过度拟合&#xff0c;或者使用大数据量、多…

考研数学660刷题记录

&#x1f422;&#x1f422; 基本概念-基本理论-基本方法 &#x1f422;&#x1f422; 660刷题记录 二轮复刷标志 ⭐&#xff1a;掌握不熟练 ⭐⭐&#xff1a;是基本方法的组合&#xff0c;但没解出来 ⭐⭐⭐&#xff1a;很难想到这种破局的手段 序号①、②&#xff1a;表示多…

【阶段一】Python快速入门02篇:数据结构-列表

本篇的思维导图: 数据结构-列表 列表的概念 列表(list)是用来存储一组有序数据元素的数据结构,元素之间用逗号分隔。列表中的数据元素应该包括在方括号中,而且列表是可变的数据类型,一旦创建了一个列表,你可以添加、删除或者搜索列表中的元素。在方括号中的数据可以是 i…

小程序:会议OA其他页面

目录 会议管理 一&#xff0c;自定义tabs组件 二&#xff0c;会议管理 父子组件传参演示 个人中心 会议管理 一&#xff0c;自定义tabs组件 文档参考:自定义组件 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/framework/custom-co…

MacBook 与其他设备的低成本高性能数据传输方案

本篇文章分享在不使用路由器的情况下&#xff0c;使用“数据线或网线”将 MacBook 与其他设备连接在一起&#xff0c;获得更高效率的数据交换性能。 写在前面 最近考虑将 Mac 设备和其他的设备连在一起使用&#xff0c;比如之前在“廉价的家用工作站方案&#xff1a;前篇”或…

利用Python实现酒店评论的中文情感分析,含数据集

利用Python实现酒店评论的情感分析 完整代码下载地址&#xff1a;利用Python实现酒店评论的中文情感分析 情感极性分析&#xff0c;即情感分类&#xff0c;对带有主观情感色彩的文本进行分析、归纳。情感极性分析主要有两种分类方法&#xff1a;基于情感知识的方法和基于机器学…

抽象类和接口1

目录 &#x1f324;️抽象类概念 &#x1f324;️抽象类语法 &#x1f324;️抽象类的作用 ⛅接口的概念 ⛅接口的语法 ⛅接口的使用 ⛅接口的特性 ....... &#x1f324;️抽象类概念 在面向对象的概念中&#xff0c;所有对象都是通过类来描述的&#xff0c;但并不是所有的…

上手华为鸿蒙手表gt系列从准备到发布

文章目录1、前期准备2、证书&签名3、编码&发布FQA:问题1&#xff1a;The graphic card OpenGL version is too old for Previewer to work. It must be 3.2 or later. Update the OpenGL driver based on the graphics card model.问题2&#xff1a;编译成HAp,报错 ent…

[UE笔记]延迟与延迟补偿

Lag即延迟&#xff0c;是多人游戏中常会出现的一个现象。lag compensation即延迟补偿&#xff0c;是一种减少延迟对游戏造成影响的技术。 Ping 多个含义 一种指令&#xff08;用于验证ip地址是否存在或者主机是否正在运行&#xff09;描述服务器需要多长时间响应客户端的输入…

OpenCV实战——使用邻居访问扫描图像

OpenCV实战——使用邻居访问扫描图像0. 前言1. 图像锐化2. 邻居访问扫描图像3. 锐化滤波器4. 完整代码相关链接0. 前言 在图像处理中&#xff0c;有时需要根据某个像素的相邻像素的值计算该像素位置的值。当这个邻域包括上一行和下一行的像素时&#xff0c;就需要同时扫描图像…