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

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

3天内不再提示

OpenCV中色彩空间的转换函数

深度学习自然语言处理 来源:深度学习自然语言处理 作者:云时之间 2020-11-02 15:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在这一篇文章中,我们将会学习使用一下OpenCV中色彩空间的转换函数,我们这里说的色彩空间是说的使用多种颜色(通常指三种以上),来表示颜色的方法,像是我们平时所说的RGB,HSV,YUV,YCRCB,都是色彩空间模型。OpenCV也很方便的封装了很多的色彩空间函数。下面我们一起来实践一下(以下所有试验都根据下图完成,我截取的Windows自带的壁纸^_^)


一:RGB

RGB我们很熟悉,一幅图像是由三个独立的红,蓝,绿通道构成,每个值代表每个像素的每个分量的度量值,如果值越高也就越亮。

因为人眼也是由三种感光细胞构成,因此RGB我们是最熟悉的,比如在电竞的时候,使用RGB灯可以刺激人的感官,提升成绩。

上图也就是RGB的实现方式。


二:灰度

灰度图像我们的应用也是非常广泛,包括我们后续的如果做视频追踪也都是将彩色视频逐帧转换为灰度图像再去定位,不过这是后话。

彩色转换为灰度图像的计算方法如下:

每个像素值只表示灰度信息这一单一信息

RGB[A]准换成灰度:Y=0.299*R+0.587*G+0.114*B

灰度转换为RGB[A]:R=Y,G=Y,B=Y,A=max(ChannelRange)

在OpenCV中我们可以使用cvtColor函数来实现转换

结果如下:


三:HSV

HSV颜色空间输入面向色度的颜色坐标系统的一种。这种类型的颜色模型接近人类颜色感知的仿真模型。

HSV的三个通道表示色度(H给出的颜色光谱构成的一种度量),饱和度(S给出主波长中的纯光比例,这表明一种颜色距离相同亮度灰度的程度)和纯度(V给出相对于白色光照强度的亮度),对应于直觉上的色彩、明暗和色调。HSV广泛应用于色彩的比较.

关于HSV的计算可以参考以下的公式:

这里我们用OpenCV实现:

得到的结果如下:

这样来看,似乎什么信息都没有,这里要注意一点,因为在代码中显示函数使用的是imshow(),这个函数是以RGB来显示的,因此我们使用HSV肯定是不正确的,如果想显示正确,必须要将其转换成RGB空间,这个具体以后再详细说一下。


四:YCRCB

该空间广泛用于视频和图像压缩,不能算作纯粹的色彩空间,它是RGB颜色空间的一种解码方式Y通道表示亮度,而Cr和Cb表示红色差值(在RGB空间中R通道和Y的差值)和蓝色差值(在RGB空间中B通道和Y的差值)各自的色度分量。

其变化的计算如下:

在OpenCV中,我们使用:

得到的结果如下:

总体来看,还是可以看得出相对于其他的色彩模型,还是能够保留一定的色彩,但是因为压缩的缘故,色彩空间还是差很多。

完整的代码如下,希望大家可以多多动手,亲身尝试一下。

import cv2 as cvimport numpy as np#色彩空间转换函数:RGB,HSV,YUV重要def color_space_demo(image): gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) cv.imshow("gray",gray) hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) cv.imshow("HSV",hsv) yuv = cv.cvtColor(image,cv.COLOR_BGR2YUV) cv.imshow("YUV",yuv) Ycrcb = cv.cvtColor(image,cv.COLOR_BGR2YCrCb) cv.imshow("YCRCB",Ycrcb) #imread函数用来读取图片src = cv.imread("D:/1.png")#namedWindow函数用来指定输出图片的尺寸和窗口大小,autosize是自动大小cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)#imshow函数用来显示图像cv.imshow("input image",src)color_space_demo(src)#等待键盘触发,否则一直在此窗口等待cv.waitKey(0)#结束所有的窗口cv.destroyAllWindows()

责任编辑:xj

原文标题:【CV学习笔记】色彩空间

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

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

    关注

    0

    文章

    54

    浏览量

    17473
  • OpenCV
    +关注

    关注

    33

    文章

    651

    浏览量

    44420
  • HSV
    HSV
    +关注

    关注

    0

    文章

    10

    浏览量

    2804

原文标题:【CV学习笔记】色彩空间

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

    ,cv2.COLOR_BGR2GRAY) #色彩空间转换:彩色-->灰度图片 ret, binary = cv2.threshold(gray, 150, 255
    发表于 08-09 13:30

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

    的实现 在 OpenCV ,CamShift 算法通过 cv2.CamShift() 函数实现。 # -*- coding: utf-8 -*- import cv2 imp
    发表于 08-09 13:19

    如何板端编译OpenCV并搭建应用--基于瑞芯微米尔RK3576开发板

    .. make-j8 可以首先测试下opencv环境是否正常 输入 ./example_opencv即可打开如上命令,证明系统的cv环境没有问题 性能测试 在hog测试dnn加速平均帧率10fps左右 8cpu已经接近
    发表于 08-08 17:14

    ElfBoard技术贴|如何在【RK3588】ELF 2开发板安装openCV4以及第三方库contrib

    应用,不同项目对功能、性能等方面常有特定需求,开发者可能需要使用其他版本的OpenCV,此时便需替换Buildroot的默认配置。同时,为满足更复杂场景需求并扩展功能,添加OpenCV的contrib
    的头像 发表于 08-05 11:03 4309次阅读
    ElfBoard技术贴|如何在【RK3588】ELF 2开发板<b class='flag-5'>中</b>安装<b class='flag-5'>openCV</b>4以及第三方库contrib

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

    demo11_line.py 然后向该文件添加以下内容: 第 1 行和第 2 行分别导入了 opencv 和 numpy 库; 第 3 行使用 zeros()函数创建一个 512x512 的黑色图片; 第 4 行使
    发表于 06-04 10:38

    快速部署!米尔全志T527开发板的OpenCV行人检测方案指南

    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV行人检测方案测试。摘自优秀创作者-小火苗 一、软件环境安装1.在全志T527开发板安装OpenCV
    发表于 04-11 18:14

    为LSDK构建opencv时遇到的问题求解

    我正在尝试使用 flex-builder 来运行 bld -c opencv -r ubuntu:桌面 我想要最新版本的 OpenCV。在我的 sdk.yml 文件,我将 opencv
    发表于 03-26 08:26

    详解RTOS的Hook函数

    Hook函数是RTOS的一个关键特性,通过该函数,用户可以增强对任务管理的控制,定义系统行为。
    的头像 发表于 03-24 16:14 839次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-内核空间与用户空间的数据拷贝之数据拷贝介绍

    在Linux系统,内核空间和用户空间是两个独立的地址空间,它们有不同的访问权限和内存保护机制。在内核空间和用户
    发表于 03-19 08:55

    西门子TIA Portal函数FC和函数块FB的相互转换

    描述 本文将介绍在西门子 TIA Portal 中使用 Add-In 插件实现函数 FC 和函数块 FB 的相互转换的方法和步骤。 第1步: 添加 PLC 设备。 选择西门子 CPU 1214C
    的头像 发表于 01-15 10:07 3037次阅读
    西门子TIA Portal<b class='flag-5'>中</b><b class='flag-5'>函数</b>FC和<b class='flag-5'>函数</b>块FB的相互<b class='flag-5'>转换</b>

    FRED应用:偏振分色显示空间光谱分布

    这个例子说明了光通过双折射元件会造成空间色彩分离。偏振白光入射到一个用方解石(一种单轴晶体)做的简单镜头上,汇聚的光束继续通过波片和偏振元器件上,被屏幕拦截。FRED的彩色图像特征用来显示空间光谱
    发表于 01-13 10:00

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

    () 函数加载图像。 目的:为后续处理和分析准备图像数据。 转换色彩空间 使用 cv2.cvtColor() 进行色彩
    发表于 12-14 09:31