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实现

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

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

    关注

    28

    文章

    1340

    浏览量

    59177
  • OpenCV
    +关注

    关注

    33

    文章

    651

    浏览量

    44416
  • 颜色空间
    +关注

    关注

    0

    文章

    3

    浏览量

    1540

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    零成本钢铁侠手套!树莓派+OpenCV 秒变手势遥控器!

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追
    的头像 发表于 08-16 16:16 883次阅读
    零成本钢铁侠手套!树莓派+<b class='flag-5'>OpenCV</b> 秒变手势遥控器!

    如何使用树莓派与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追
    的头像 发表于 08-14 17:45 957次阅读
    如何使用树莓派与<b class='flag-5'>OpenCV</b><b class='flag-5'>实现</b>面部和运动追踪的云台系统?

    如何使用树莓派+OpenCV实现姿态估计和面部特征点追踪?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追
    的头像 发表于 08-13 17:44 976次阅读
    如何使用树莓派+<b class='flag-5'>OpenCV</b><b class='flag-5'>实现</b>姿态估计和面部特征点追踪?

    【GM-3568JHF开发板免费体验】OpenCV开发环境安装和计数程序开发

    、 Android 等系统上运行,并通过Python接口简化操作。 sudo apt install libopencv-dev python3-opencv 四、OpenCV图像识别测试 使用python3
    发表于 08-09 13:30

    【GM-3568JHF开发板免费体验】OpenCV 视频目标跟踪 ( CamShift)

    和 CamShift 是两种经典且常用的算法。本文将详细讲解这两种算法的原理、实现步骤以及如何在 OpenCV 中使用它们。 CamShift 算法 1.1 算法原理 CamShift(Continuously
    发表于 08-09 13:19

    itop-3568开发板机器视觉opencv开发手册-图像绘制-画线

    参数为待绘制的图像; pt1 为线段的起点; pt2 为线段的终点; color 为形状的颜色,用元组表示,例如(255,0,0)表示; thickness 为线条的粗细,-1 为填充模式,默认值为 1
    发表于 06-04 10:38

    基于LockAI视觉识别模块:C++寻找色块

    ,便于设置阈值。 1.2 色块识别的流程 获取图像。 将图像从 BGR 转换为 HSV 颜色空间。 创建二值掩码,筛选出符合颜色范围的像素。
    发表于 05-12 14:55

    基于LockAI视觉识别模块:C++使用图像的统计信息

    ./Test-Image-information-statistics 5.2 运行效果 在运行上述代码时,会输出以下结果: 6. 总结 通过上述内容,我们介绍了如何使用 OpenCV 提取图像的 ROI、转换颜色
    发表于 05-08 10:31

    基于LockAI视觉识别模块:C++图像的基本运算

    图像处理中,理解图像的基本操作是掌握计算机视觉技术的关键。本文章将介绍 基于LockAI视觉识别模块下OpenCV图像的基本运算方法,包括像素操作、逻辑运算和差值运算,并通过一个
    发表于 05-06 16:56

    基于LockAI视觉识别模块:C++图像采集例程

    本文主要演示如何使用LockAI视觉识别模块进行视频流的读取,同时使用Edit模块进行图像传输。基础知识讲解1.1OpenCV简介OpenCV(OpenSourceComputerVisionLibra
    的头像 发表于 04-30 18:23 557次阅读
    基于LockAI视觉识别模块:C++<b class='flag-5'>图像</b>采集例程

    基于LockAI视觉识别模块:C++图像采集例程

    OpenCV 实现摄像头模块的视频流读取与图像传输。核心步骤包括: 初始化摄像头并设置分辨率; 打开摄像头并逐帧捕获图像; 使用 Edit 模块进行
    发表于 04-30 10:52

    使用OpenCV保存从摄像头捕获的视频时更改颜色输出视频收到警告怎么解决?

    保存了从配备 OpenCV* 的摄像头捕获的视频。 生成更改的颜色输出视频。 收到警告:[ INFO:0] global .。/opencv/modules/core/src/utils
    发表于 03-05 07:20

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

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

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

    1简介Opencv(OpenSourceComputerVisionLibrary)是一个基于开源发行的跨平台计算机视觉库,它实现图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域最有
    的头像 发表于 12-14 09:10 1263次阅读
    AI模型部署边缘设备的奇妙之旅:如何在边缘端部署<b class='flag-5'>OpenCV</b>

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

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