0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用OpenCV进行颜色检测

INDEMIND 来源:INDEMIND 2023-08-18 10:32 次阅读

关于利用OpenCV进行颜色分类,本文包含了HSV介绍及应用、cv2.inRange及应用、RGB与HSV通道的区别三个方面。

01 HSV介绍

HSV是相对RGB的另一种颜色表示方式,它相对RGB而言,是一种比较直观的颜色模型。其中颜色的参数分别是:色调(H),饱和度(S),明度(V)。

色调H:

用角度度量,取值范围0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;

饱和度S:

饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结合。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

明度V:

明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关,光照对此值影响最大。通常取值范围为0%(黑)到100%(白)。

代码:

OpenCV中由BGR转为HSV方法:注意:OpenCV读取的图片格式为BGR格式,非RGB格式。

81225524-3cde-11ee-ac96-dac502259ad0.png

原图:

处理后:

02 利用cv2.inRange进行二值化处理

cv2.inRange介绍

此函数可实现图像的二值化处理功能,这点类似之前提到过的threshold()函数,但是threshold()函数只能对单一通道进行二值化处理,而inRange()可以对多个通道进行操作。使用inRange处理之前,需要确定好两个数组,即图像上限和图像下限。

img=cv2.inRange(hsv,lower,upper)

第一个参数:hsv指的是原图
第二个参数:lower指的是图像中低于这个lower的值,图像值变为0
第三个参数:upper指的是图像中高于这个upper的值,图像值变为0

注意:如果传入的图像是彩色的,即三维数组图像,则lower与upper里面分别有三个元素,并且二者必须都是数组类型。

(lower, upper)两个数组参数可以作为一个范围,如果图像的像素点在这个范围之内,像素点就变成255(即白色),如果图像的像素点在这个范围之外,像素点就变为0(即黑色)。

处理完成之后,图像变为二值图像,想要的图像颜色变为白色,其他颜色变为黑色,之后可以专门针对白色进行处理。

代码示例

提取该图水杯部分(即黑色部分):

818640ca-3cde-11ee-ac96-dac502259ad0.png

处理后:

由于猫耳朵与后面角落有部分黑色,并且杯子本身黑色不纯(存在白点),会产生噪点,需要后续进行处理,消去噪音点。

03 RGB通道与HSV通道在颜色检测中的区别

如果光源不稳定,光照变化较大(存在阴影或者亮斑),则利用HSV通道检测就比RGB检测高效得多。光照变化较大时,对RGB三个色道的参数影响都很大,在实际调参过程中会显得非常麻烦,而且效果不理想。

HSV中,由于H是颜色的色调,基本不受光照影响(即不受阴影或者亮斑影响),而V(明度)主要体现了颜色明亮程度,可以主要调试V来应对光源的变化,并且调试效果比RGB色道要可靠。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RGB
    RGB
    +关注

    关注

    4

    文章

    763

    浏览量

    57407
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40774
  • 颜色检测
    +关注

    关注

    0

    文章

    6

    浏览量

    813
  • HSV
    HSV
    +关注

    关注

    0

    文章

    10

    浏览量

    2567

原文标题:基础丨利用OpenCV进行颜色检测

文章出处:【微信号:gh_c87a2bc99401,微信公众号:INDEMIND】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在全志H616核桃派上实现USB摄像头的OpenCV颜色检测

    在给核桃派开发板用OpenCV读取图像并显示到pyqt5的窗口上并加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。颜色检测
    发表于 01-22 10:10

    基于openCV的人脸检测系统的设计

    通过对基于Adaboost人脸检测算法的研究,利用该算法与计算机视觉类库openCV进行人脸检测系统的设计,实现了对出现在视频或图像中的人脸
    发表于 12-23 14:19

    如何使用Python中的OpenCV模块检测颜色

    在这篇文章中,我们将看到如何使用 Python 中的 OpenCV 模块检测颜色,进入这个领域的第一步就是安装下面提到的模块。pip install opencv-pythonpip
    发表于 02-09 16:31

    基于openCV的人脸检测识别系统的设计

    通过对基于Adaboost人脸检测算法的研究,利用该算法与计算机视觉类库openCV进行人脸检测系统的设计,实现了对出现在视频或图像中的人脸
    发表于 06-15 10:53 477次下载
    基于<b class='flag-5'>openCV</b>的人脸<b class='flag-5'>检测</b>识别系统的设计

    Android系统下OpenCV的人脸检测模块的设计

    针对解决OpenCV人脸检测模块在Android平台编译和移植的问题,提出一种利用JNI技术(Java Native Interface)调用OpenCV以及采用Android NDK
    发表于 11-07 17:40 118次下载
    Android系统下<b class='flag-5'>OpenCV</b>的人脸<b class='flag-5'>检测</b>模块的设计

    使用Adaboost算法实现车牌检测OpenCV上实现的研究分析

    AdabtxⅪt是一个构建精确分类器的学习算法,在目标检测领域有着广泛的应用。OpenCV是Intel开源计算机视觉库。该文给出了在OpenCV利用Adaboost算法,实现车辆车牌
    发表于 09-27 17:49 7次下载
    使用Adaboost算法实现车牌<b class='flag-5'>检测</b>在<b class='flag-5'>OpenCV</b>上实现的研究分析

    图像处理的颜色空间及其OpenCV实现

    对图像的颜色空间做了一个概念性的介绍,并通过代码的方式可视化了每种颜色空间的每个通道所表示的意义。   文章内容包括: 什么是颜色空间? 颜色空间有哪些类别? 如何在
    的头像 发表于 12-25 11:36 1476次阅读

    图像的颜色空间及其OpenCV实现

    对图像的颜色空间做了一个概念性的介绍,并通过代码的方式可视化了每种颜色空间的每个通道所表示的意义。   文章内容包括: 什么是颜色空间? 颜色空间有哪些类别? 如何在
    的头像 发表于 12-26 11:33 1791次阅读
    图像的<b class='flag-5'>颜色</b>空间及其<b class='flag-5'>OpenCV</b>实现

    利用OpenCV构建一个RaspberryPi运动检测系统

    OpenCV是一个强大的工具,结合RaspberryPi可以打开许多便携式智能设备的大门,我们将学习如何利用OpenCV的强大功能并在我们的实时闭路电视画面上构建一个RaspberryPi运动
    发表于 08-01 16:48 1005次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>OpenCV</b>构建一个RaspberryPi运动<b class='flag-5'>检测</b>系统

    如何使用Python OpenCV进行面部标志检测

    今天我们将使用相同的 OpenCV 和 Raspberry Pi 进行人脸标志检测。来自 dlib 库的预训练面部标志检测器模块将用于检测
    发表于 08-12 16:32 1238次阅读
    如何使用Python <b class='flag-5'>OpenCV</b><b class='flag-5'>进行</b>面部标志<b class='flag-5'>检测</b>

    使用opencv和python进行智能火灾检测

    电子发烧友网站提供《使用opencv和python进行智能火灾检测.zip》资料免费下载
    发表于 11-02 15:08 0次下载
    使用<b class='flag-5'>opencv</b>和python<b class='flag-5'>进行</b>智能火灾<b class='flag-5'>检测</b>

    使用TCS3200/230进行颜色检测

    电子发烧友网站提供《使用TCS3200/230进行颜色检测.zip》资料免费下载
    发表于 02-03 11:40 0次下载
    使用TCS3200/230<b class='flag-5'>进行</b><b class='flag-5'>颜色</b><b class='flag-5'>检测</b>

    利用opencv+openpose实现人体姿态检测

    利用opencv+openpose实现人体姿态检测,附详细代码。 通过一个偶然机会,我了解到了人体姿态解算,在学习K210之余,我便想着通过opencv实现这个功能,查找了很多资料,发
    的头像 发表于 06-26 10:15 2294次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>opencv</b>+openpose实现人体姿态<b class='flag-5'>检测</b>

    Python OpenCV教程:特定颜色检测

    在这篇OpenCV Python文章中,我想展示OpenCV中的基本颜色检测示例。 我们用颜色空间或颜色
    的头像 发表于 07-03 10:30 646次阅读

    在核桃派上实现USB摄像头的OpenCV颜色检测

    在前几周的文章中已经介绍过如何在核桃派上用OpenCV读取图像并显示到pyqt5的窗口上,这里在上一篇文章的基础上,给开发板加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。
    的头像 发表于 01-20 17:50 489次阅读
    在核桃派上实现USB摄像头的<b class='flag-5'>OpenCV</b><b class='flag-5'>颜色</b><b class='flag-5'>检测</b>