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

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

3天内不再提示

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

新机器视觉 来源:新机器视觉 作者:Soumyadip Sarkar 2020-12-26 11:33 次阅读

对图像的颜色空间做了一个概念性的介绍,并通过代码的方式可视化了每种颜色空间的每个通道所表示的意义。

文章内容包括:

什么是颜色空间?

颜色空间有哪些类别?

如何在OpenCV中实现?

什么是颜色空间?

颜色是一种连续的现象,它意味着有无数种颜色。但是,人类的眼睛和感知能力是有限的。所以,为了识别这些颜色,我们需要一种媒介或这些颜色的表示,这种颜色的表示被称为色彩空间。在技术术语中,一个颜色模型或颜色空间是一个特定的3-D坐标系统以及该系统中的一个子空间,其中每一种颜色都由一个单点表示。

有哪些颜色空间的类型?

目前主要有五种类型的颜色模型。但是,我将只写一些常见的(RGB、HSV和HSL)。

RGB(Red Green Blue)

HSL(Hue Saturation Lightness)

HSV(Hue Saturation Value)

YUV(Luminance, blue–luminance, red–luminance)

CMYK(Cyan, Magenta, Yellow, Key)

RGB颜色空间:

RGB颜色空间是三维坐标系中红、绿、蓝坐标所表示的著名颜色空间之一。在更专业的术语中,RGB将颜色描述为由三个部分组成的元组。每个部分都可以取0到255之间的值,其中元组(0,0,0)表示黑色,元组(255,255,255)表示白色。元组的第0、第1和第2个部分分别表示红、绿、蓝的分量。

RGB颜色空间的Python实现:

这里我们导入了必要的库,cv2用于颜色空间转换,NumPy用于数组操作,Matplotlib用于显示图像,os用于访问图像目录,tqdm用于显示加载栏。

pIYBAF_mrzuAC3dnAAB4V4n5E0c076.jpg

设置两个空列表Z和X,分别用于存储带有各自图像的标签,然后指定图像大小和路径目录。在这之后,我定义了两个函数,用于返回flower类型(assign_lable)和访问每个图像、读取和调整其大小(make_train_data)。

o4YBAF_mr1CAYQOqAACKoiFlu0A739.jpg

加载图像,然后在OpenCV以BGR格式读取图像时将BGR颜色空间转换为RGB颜色空间,但Maplotlib使用RGB格式来显示图像。这就是为什么我们需要转换颜色空间后,读取图像为RGB。

然后对固定图像进行三份拷贝,并将每份拷贝的任何双色通道设为零,分别用于访问红、绿、蓝通道。如果你让第0个颜色通道都是0那么你只会得到蓝色通道。

o4YBAF_mr2SANmBMAACZqsKfmMc732.jpg

显示图像:

pIYBAF_mr3SAPkrQAAAvTwarCMU690.jpg

HSL颜色空间:

HSL的一般含义是色调、饱和度和明度。你可以将HSL以圆柱体的形式可视化,如图2(a)所示。围绕圆柱体的是不同的颜色,比如绿色、黄色、红色等等(我们真正想要的颜色)。饱和度是指颜色的多少,而明度是指颜色有多暗或多亮。正如你所看到的,圆柱体的顶部全是白色,底部全是黑色。

图2:HSL颜色空间

HSL颜色空间的Python实现:

使用OpenCV函数**cvtColor()**将BGR颜色空间转换为HSL颜色空间,在这里我们需要传递图像,以及从哪个颜色空间到哪个颜色空间我们想要改变图像。然后再复制并使两个颜色通道为零,以便分别显示每个颜色通道。

o4YBAF_mr4iADU2EAAB072deLNg421.jpg

现在显示三个不同的颜色通道→

o4YBAF_mr5eAYXP0AAAssp18DtY928.jpg

HSV颜色空间:

HSV这个名字来自于颜色模型的三个坐标,即色相、饱和度和值。它也是一个圆柱形的颜色模型,圆柱体的半径表示饱和度,垂直轴表示值,角度表示色调。对于观察者,色调是占主导地位的,饱和度是混合到色调中的白光的数量,value是chrome的强度,value较低颜色变得更加类似于黑色,value越高,颜色变得更加像颜色本身。通过改变这些参数,我们可以生成不同的颜色。

图3:HSV颜色空间

HSV颜色空间的Python实现:

使用cvtColor()函数将色彩空间转换为HSV色彩空间。然后再复制并使两个通道置为零,以便分别显示每个通道。

o4YBAF_mr6mAeNm6AABankd0hj0461.jpg

单独显示每个颜色通道:

英文原文:https://medium.com/analytics-vidhya/image-processing-series-part1-colorspaces-836d2e3ca700

责任编辑:xj

原文标题:图像处理基础:颜色空间及其OpenCV实现

文章出处:【微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

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

    关注

    27

    文章

    1293

    浏览量

    56775
  • OpenCV
    +关注

    关注

    31

    文章

    635

    浏览量

    41374
  • 颜色空间
    +关注

    关注

    0

    文章

    3

    浏览量

    1456

原文标题:图像处理基础:颜色空间及其OpenCV实现

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV

    直线、圆等)的技术,它通过参数空间的投票机制来实现。对于圆形检测,Hough变换可以识别出满足特定条件的圆形结构。下面是使用 OpenCV 进行圆形检测的基本步骤: 首先加载需要检测圆的图像
    发表于 12-14 09:31

    【AI实战项目】基于OpenCV的“颜色识别项目”完整操作过程

    适用于哪些场景,然后通过Python编写代码来实现这些算法,并应用于实际项目中,实现图像的检测、识别、分类、定位、测量等目标。华清远见【python+OpenCV
    的头像 发表于 12-09 16:42 331次阅读
    【AI实战项目】基于<b class='flag-5'>OpenCV</b>的“<b class='flag-5'>颜色</b>识别项目”完整操作过程

    基于OpenCV的拆分和合并图像通道实验案例分享_基于RK3568教学实验箱

    一、实验目的 本节视频的目的是了解图像通道的概念,学习OpenCV的基本操作,并掌握通过OpenCV实现拆分和合并图像通道的方法。 二、实验
    发表于 12-03 14:27

    RK3568 + OpenCV 会碰撞出什么火花?案例详解:2-1 基于OpenCV的画线实验

    一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现图像处理和计算机视觉方面的很多通用算法。 OpenCV具有以下特点: 不管是科学研究,还是商业
    发表于 12-03 14:09

    手写图像模板匹配算法在OpenCV中的实现

    OpenCV中的模板匹配是支持基于NCC相似度查找的,但是不是很好用,一个主要的原因是查找最大阈值,只能匹配一个,自己比对阈值,又导致无法正确设定阈值范围,所以问题很多。于是我重新写了纯Python版本的NCC图像模板匹配的代码实现
    的头像 发表于 11-11 10:12 253次阅读
    手写<b class='flag-5'>图像</b>模板匹配算法在<b class='flag-5'>OpenCV</b>中的<b class='flag-5'>实现</b>

    OpenCV图像识别C++代码

    安装OpenCV库 首先,您需要在您的计算机上安装OpenCV库。您可以从OpenCV官网下载预编译的库或从源代码编译。安装完成后,确保将OpenCV的头文件和库文件添加到您的项目中。
    的头像 发表于 07-16 10:42 2073次阅读

    opencv图像识别有什么算法

    OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,提供了大量的图像处理和计算机视觉相关的算法。以下是一些常见的OpenCV
    的头像 发表于 07-16 10:40 1074次阅读

    opencv-python和opencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV
    的头像 发表于 07-16 10:38 1230次阅读

    opencv的主要功能有哪些

    OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了大量的计算机视觉算法和工具。以下是OpenCV的主要功能: 图像处理
    的头像 发表于 07-16 10:35 1585次阅读

    OpenCV图像降噪算法的中值滤波与高斯滤波详解

    图像噪声是指图像中不希望出现的随机亮度或颜色变化,通常会降低图像的清晰度和可辨识度,以及会降低图像的质量并使
    的头像 发表于 04-03 14:58 6526次阅读
    <b class='flag-5'>OpenCV</b><b class='flag-5'>图像</b>降噪算法的中值滤波与高斯滤波详解

    OpenCV筑基之图像的仿射变换方法总结

    图像的几何变换是指将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置,其实质是改变像素的空间位置,估算新空间位置上的像素值。
    的头像 发表于 03-19 11:11 1619次阅读
    <b class='flag-5'>OpenCV</b>筑基之<b class='flag-5'>图像</b>的仿射变换方法总结

    如何实现PIL和OpenCV之间图像数据的转换呢?

    PIL图像数据格式转换成OpenCV图像数据格式
    的头像 发表于 02-25 13:43 1232次阅读

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

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

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

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

    使用图像处理库OpenCV从摄像头获取数据并在PyQt5上显示出来

    OpenCV能够处理图像、视频、深度图像等各种类型的视觉数据
    的头像 发表于 01-05 17:32 2616次阅读
    使用<b class='flag-5'>图像</b>处理库<b class='flag-5'>OpenCV</b>从摄像头获取数据并在PyQt5上显示出来