opencv--颜色识别

article/2025/8/26 22:23:56

目录

一、主要函数介绍

 二、颜色识别

 三、其他相关函数介绍

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://chatgpt.dhexx.cn/article/jsD85qhy.shtml

相关文章

颜色识别OpenCV

下面有多种颜色识别方法&#xff0c;可根据需要进行选择 ①colorList.py&#xff08;颜色库&#xff09; import numpy as np import collectionsdef getColorList():dict collections.defaultdict(list)# blacklower_black np.array([0, 0, 0])upper_black np.array([180…

SPSSAU统计分析软件,一键输出三线表格式分析结果

SPSSAU最近和一位朋友聊天&#xff0c;她在写论文&#xff0c;说到自己用SPSS软件对问卷数据做统计分析&#xff0c;做完之后分析结果有了&#xff0c;拿给导师看&#xff0c;但她们导师说&#xff0c;论文中的表格必须是三线表格式&#xff0c;然后她就得要自己手动制作三线表…

SPSS软件的数据分析与GDP和人口老龄化的预测

目录 前言 问题二模型的建立与求解 1.2.1 ARIMA时间序列模型的建立与求解 平稳性检验 的时间序列预测模型的建立与求解 ​​​​​​​模型的检验 ​​​​​​​对于的时间序列预测模型的建立与求解 ​​​​​​​模型的检验 ​​​​​​​ 前言 SPSS软件的数据分析与GDP和…

数据分析与挖掘———SPSS Moderler

数据分析与挖掘———SPSS Moderler 一、Modeler给概述 1、SPSS Modeler基本认识 IBM SPSS Modeler是一组数据挖掘工具&#xff0c;通过这些工具可以采用商业技术快速建立预测性模型&#xff0c;并将其应用于商业活动&#xff0c;从而改进决策过程。 SPSS Modeler提供了各种…

用SPSS做数据分析(1)

写在前面: 爬虫今天停更一天,今天是周六,今天要把最近网课学习SPSS课程做个总结和回顾,明天继续更新爬虫的内容,今天这篇文章主要是SPSS中的数据管理,一些关于数据的简单操作,是属于SPSS中比较基础的内容,希望看完博客能动手亲自实践一下,会有奇效 文章目录 写在前面:SPSS数据…

利用SPSS做数据分析①(了解SPSS)

话不多说&#xff0c;上才艺&#xff0c;BGM&#xff0c;BGM&#xff0c;BGMBGM。。。哈哈哈哈 不闹了&#xff0c;接下来让我们一起认识一个非常好用的数据分析工具&#xff1a;SPSS 1、SPSS是什么&#xff1f; SPSS是广大统计爱好者和数据分析师最熟悉的名字&#xff0c;它…

如何用SPSS进行数据分析?

1.什么是SPSS SPSS是社会统计科学软件包的简称&#xff0c; 其官方全称为IBM SPSS Statistics。SPSS软件包最初由SPSS Inc.于1968年推出&#xff0c;于2009年被IBM收购&#xff0c;主要运用于各领域数据的管理和统计分析。作为世界社会科学数据分析的标准&#xff0c;SPSS操作…

数据分析5大软件大PK:Python、Excel、R、SAS、SPSS你最爱哪个?

转自 中国统计网 本文为转载分享&#xff0c;若侵权请联系后台删除 1 Excel Microsoft Excel是微软公司的办公软件Microsoft office的组件之一&#xff0c;是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。Excel 是微软办公套装软件的一个…

SPSS:数据分析

目录 1、数据采集 2、数据是否服从正态分布 3、T检验&#xff08;T Test&#xff09; 4、方差分析&#xff08;ANOVA&#xff09; 5、卡方检验&#xff08;Chi-square Test&#xff09; 6、灰色关联度分析&#xff08;Grey Relation Analysis&#xff0c;GRA&#xff09;…

[SPSS] SPSS统计分析软件简介

SPSS的英文缩写来源于以下两个 ① Statistical Package for Social Science(社会科学统计软件包) ② Statistical Product and Service Solutions(统计产品与服务解决方案) SPSS是一种专业的统计分析软件。为用户提供了直观的图形化菜单界面&#xff0c;用户的数据管理和统计…

SPSS软件介绍

SPSS软件界面描述 IBM SPSS是目前常用的一种统计分析软件&#xff0c;SPSS&#xff08;Statistical Product and Service Solutions&#xff09;是统计产品和服务解决方案软件&#xff0c;操作简单&#xff0c;无需写代码&#xff0c;只需确定要分析的数据及之间的因变、自变关…

数据分析软件及spss简单操作

数据分析软件介绍 SPSS统计软件 SPSS是英文Statistical package for the social science 的缩写&#xff0c;翻译成汉语是社会学统计程序包&#xff0c;20世纪60年代末由美国斯坦福大学的三位研究生研制&#xff0c;1975年在芝加哥组建SPSS总部。SPSS系统特点是操作比较方…

SPSS数据分析全套教程(1)——SPSS概览

SPSS数据分析全套教程&#xff08;1&#xff09;——SPSS概览 什么是SPSS&#xff1f; 社会科学统计软件包&#xff08;Statistical Package for the Social Science&#xff0c;SPSS&#xff09;是世界著名的统计分析软件之一。 经近40年的发展&#xff0c;在全球已拥有大量…

初识数据分析利器SPSS

今天这篇文章小白带大家了解一款做数据分析的利器—SPSS。 不知道大家有没有了解过SPSS&#xff0c;如果了解过甚至使用过的同学又对这款工具有多深的认识呢&#xff1f; SPSS是一款常用的数据分析工具&#xff0c;不管是在学校课程、学术论文还是数据分析工作中都是非常常见…

JLink的RTT使用

前言&#xff1a;什么是RTT? RTT&#xff08; Real Time Terminal&#xff09;是SEGGER公司新出的可以在嵌入式应用中与用户进行交互的实时终端。J-Link驱动4.90之后的版本都支持RTT。RTT既可以从MCU上输出信息、也可以向应用程序发送信息&#xff0c;由于其高速的特性&#…

使用RTT代替UART,把你的JLink变成串口调试助手~

摘要&#xff1a;不知道大家在单片机开发中是如何打印调试信息的&#xff0c;大多数应该是用串口调试打印吧&#xff0c;在大多数的情况下&#xff0c;一般在制板和写代码时都会预留串口1做为调试打印用。 但是在实际开发如果没有预留串口怎么办&#xff1f;其实我们的下载器是…

TCP RTT与TCP RTO关系详解

本文目录 1&#xff0c;TCP的RTT和TCP的RTO的定义1.1&#xff0c;什么是TCP的RTT1.2&#xff0c;什么是TCP的RTO 2&#xff0c;TCP的当前RTT和RTO的计算2.1&#xff0c;开始讲RTT计算算法前&#xff0c;我们先理解一下TCP里对RTT进行采样的流程2.2&#xff0c;最初始的TCP RTT和…

通过pylink给jlink-RTT添加时间戳

参考链接 目前还有一些bug&#xff0c;比如时间戳有时候会加在一行log的中间&#xff0c;有时候又会少一些时间戳&#xff0c;但是log目前没发现出现问题 在使用pylink时&#xff0c;需要用到Jlink的dll库&#xff0c;需要将D:\SEGGER\JLink_V766d文件夹下的JLink_x64.dll和JLi…

J-Link RTT 支持浮点数

RTT的使用 略 添加浮点数功能 注&#xff1a; 如下代码暂时不支持数据左补零&#xff0c;正浮点数前面显示等功能&#xff1b;不指定位宽时按实际位宽显示&#xff0c;不指定小数位数时按2位小数显示。 在SEGGER_RTT_printf.c文件的SEGGER_RTT_vprintf()函数中&#xff0c;添…

RTT Studio和Cubemx联合开发

1. RTT studio创建工程 创建工程 ## 创建完成以后的目录结构 2. 配置CubuMx 双击cubumx的图标打开CubeMx 配置时钟 生成代码 构建后的代码结构 编译代码满屏错误&#xff1a;不要慌 3. 新增脚本 新建scons脚本文件 SConscript 脚本内容如下&#xff0c;每次修改外…