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

    文章

    53

    浏览量

    16860
  • OpenCV
    +关注

    关注

    31

    文章

    635

    浏览量

    41345
  • HSV
    HSV
    +关注

    关注

    0

    文章

    10

    浏览量

    2604

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    RTOS钩子函数的用途及用法

    在很多操作系统,都存在这样一类API函数接口:HOOK函数(也叫钩子函数)。
    的头像 发表于 10-23 16:25 262次阅读
    RTOS<b class='flag-5'>中</b>钩子<b class='flag-5'>函数</b>的用途及用法

    【龙芯2K0300蜂鸟板试用】5 搭建opencv开发环境

    在官方提供的buildroot根文件系统,不支持opencv库,故需要自己增加,另外,在本地编译的时候,需要在本地(ubuntu)上安装对应opencv库,这样才能将编译好的镜像放到板子上跑起来
    发表于 08-27 15:08

    OpenCV图像识别C++代码

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

    opencv-python和opencv一样吗

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

    opencv的主要功能有哪些

    OpenCV提供了丰富的图像处理功能,包括图像的读取、显示、保存、转换等。此外,OpenCV还支持图像的滤波、边缘检测、形态学操作、图像金字塔等高级图像处理技术。 特征检测与描述:OpenC
    的头像 发表于 07-16 10:35 1543次阅读

    OpenCV携奥比光3D相机亮相CVPR 2024

    6月17日-21日,奥比光合作伙伴OpenCV携Orbbec 3D相机参展在美国西雅图举办的CVPR 2024(即IEEE国际计算机视觉与模式识别会议),让开发者亲身体验Orbbec 3D相机
    的头像 发表于 06-21 09:38 571次阅读

    嵌入式学习-飞凌ElfBoard ELF 1板卡 - 如何在Ubuntu编译OpenCV

    在之前发布的文章探讨了交叉编译OpenCV并部署至嵌入式系统的方法。然而,在调试阶段,我们发现在 Ubuntu 环境下将 OpenCV 编译为 X86 架构可能更加方便和高效。 通过在主机上编译并
    发表于 06-07 09:21

    ELF 1技术贴|如何在Ubuntu编译OpenCV

    在之前发布的文章探讨了交叉编译OpenCV并部署至嵌入式系统的方法。然而,在调试阶段,我们发现在Ubuntu环境下将OpenCV编译为X86架构可能更加方便和高效。通过在主机上编译并使用X86架构
    的头像 发表于 05-31 16:41 1168次阅读
    ELF 1技术贴|如何在Ubuntu<b class='flag-5'>中</b>编译<b class='flag-5'>OpenCV</b>库

    请问STM32_ImageProcessingLibrary中有类似于opencv的findContours函数吗?

    STM32_ImageProcessingLibrary中有类似于opencv的findContours函数吗?
    发表于 03-07 07:17

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

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

    SDI转AV转换器技术解析:转换过程中的关键要素与优势

    优势,使得高清视频的应用更加广泛和便捷。 关键要素: 数字信号处理 :SDI转AV转换器在转换过程中首先需要对SDI信号进行数字信号处理。这包括解码、降噪、色彩空间
    的头像 发表于 02-22 15:03 657次阅读

    verilog函数和任务对比

    在verilog函数和任务均用来描述共同的代码段,并且在模式内任意位置被调用,提高代码效率,让代码更加的直观,提高代码可读性。但是在实际使用的过程函数和任务也存在诸多的不同,下
    的头像 发表于 02-12 18:43 886次阅读

    ELF 1技术贴|如何移植OpenCV

    OpenCV拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux、Windows、Mac等操作系统上流畅运行,并能够快速实现一系列图像处理和识别任
    的头像 发表于 01-09 13:55 389次阅读
    ELF 1技术贴|如何移植<b class='flag-5'>OpenCV</b>