colorsys模块(RGB/HSV/HSL/YIQ)颜色模型简介
colorsys模块
博主最近又进入了无聊模式,没事就翻Python标准库读源码读着玩。但是里面有几个模块确实规模比较大,所以坑挖了一半就停了…现在电脑桌面上一堆没填完的坑。总之慢慢填吧…
今天发现了这么一个模块,非常简单,也有些实用性(对于经常用Python处理图片的同学来说),所以在此介绍一下。
colorsys模块提供了用于RGB和YIQ/HLS/HSV颜色模式的双向转换的接口。它提供了六个函数,其中三个用于将RGB转YIQ/HLS/HSV,另外三个用于将YIQ/HLS/HSV转为RGB。
colorsys.rgb_to_yiq(r, g, b)
colorsys.rgb_to_hls(r, g, b)
colorsys.rgb_to_hsv(r, g, b)
colorsys.yiq_to_rgb(y, i, q)
colorsys.hls_to_rgb(h, l, s)
colorsys.hsv_to_rgb(h, s, v)
需要注意的是:除了I和Q之外的其他参数取值都是在[0, 1]范围内的浮点数。所以传入RGB参数的时候还需要额外做一个除以255的操作。
>>> import colorsys>>> colorsys.rgb_to_hsv(30/255, 50/255, 160/255)(0.6410256410256411, 0.8125, 0.6274509803921569)
- 1
- 2
- 3
具体的转换算法在这就不介绍了,源码里都有,也就100多行,有兴趣阅读源码的同学可以在Python根目录/Lib目录下找到colorsys.py这个源文件。在这主要介绍一下模块中涉及到的四种颜色模型。
RGB
RGB是一种相加色,也就是根据红绿蓝三种光的相互叠加来显示不同的颜色,RGB三个字母分别代表红色Red、绿色Green和蓝色Blue。那些分辨率比较小的的显示器用手机拍出照片后放大看,就可以看到由红绿蓝三种颜色的发光管共同组成的一个像素,像素的颜色就是由这三个发光管的亮度决定的。
HSV和HSV
HLS也就是人们常说的HSL,分别代表色相Hue,亮度Lightness和饱和度Saturation。HSV也就是HSB,用过Photoshop的同学应该对HSB不陌生,它的三个字母分别代表色相Hue,饱和度Saturation和明度Value(Brightness)。
RGB在数学上可以用一个平面直角坐标系来表示,三个坐标轴分别代表红绿蓝三色的色值。但是用RGB来表示颜色时,颜色的变化对于人类来说并不是很直观,于是就产生了HSL和HSV。HSL和HSV通过对颜色信息的进一步封装,使其通过一种人类更加容易感知的形式来表示颜色变化。(色调的变化、亮度的变化、色彩纯度的变化)
HSL和HSV通过对RGB颜色模型进行变换,将原本的平面直角坐标系转换为一个圆柱坐标系。HSL颜色模型的顶端是白色,底端是黑色,可以用一个双六角锥体来表现。而HSV颜色模型可以用一个倒六角锥体来表示,锥体的顶点是黑色。下图来自英文维基百科,展现了RGB是怎么转换为HSL和HSV的:
注意:这两个颜色模型中对于色相的定义是相同的,但各自对于饱和度的定义是不同的。
下面两张同样来自维基百科的图片展示了这两个模型的差异:
YIQ
YIQ颜色模型使用亮度Luminance和色度Chrominance来表示颜色。用一组坐标来表示颜色的变化,Q表示了颜色色调由紫到绿的变化,I表示了颜色色调由橙到蓝的变化。
关于YIQ的特点,百度百科-颜色空间作了以下总结:
YIQ颜色空间具有能将图像中的亮度分量分离提取出来的优点,并且YIQ颜色空间与RGB颜色空间之间是线性变换的关系,计算量小,聚类特性也比较好,可以适应光照强度不断变化的场合,因此能够有效地用于彩色图像处理。
下图来自英文维基百科:
总结
其实模块和源码倒没有什么难的,难的是几个颜色模型的概念,在bing和百度上找到的中文资料都非常有限。如果有读者对这方面感兴趣的,推荐你们读一下下面链接里的参考资料,有条件的最好买图像处理方面的专业书籍来看。
参考资料:
https://docs.python.org/3.6/library/colorsys.html
https://en.wikipedia.org/wiki/HSL_and_HSV
https://en.wikipedia.org/wiki/YIQ
colorsys模块(RGB/HSV/HSL/YIQ)颜色模型简介相关推荐
- [Python模块学习]用colorsys模块转换颜色模型,常见颜色模型简介(RGB/HSV/HSL/YIQ)
colorsys模块 博主最近又进入了无聊模式,没事就翻Python标准库读源码读着玩.但是里面有几个模块确实规模比较大,所以坑挖了一半就停了-现在电脑桌面上一堆没填完的坑.总之慢慢填吧- 今天发现了 ...
- ColorCode是一个在线随机取色工具,可以随机获取十六进制、RGB、HSl等颜色。
ColorCode是一个在线随机取色工具,可以随机获取十六进制.RGB.HSl等颜色. ColorCode 彩蛋爆料直击现场 ColorCode是一个在线随机取色工具,可以随机获取十六进制.RGB.H ...
- HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV等颜色模型简介
基本概念 所谓颜色模型就是指某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色.例如,RGB颜色模型就是三维直角坐标颜色系统的一个单位正方体.颜色模型的用途是在某个颜色域内方便的指定颜色, ...
- video LCD(液晶显示器)的接口 RGB接口 RGB色彩模型 颜色模型除了RGB, 还有CIE, YUV 给我弄混了---RGB是接口还是颜色模型
LCD的全称是Liquid Crystal Display 的简称, 即液晶显示器 LCD目前已经取代CRT, 成为TV.PC等的标配 接口类型 首先我们以传递的信号类型来区分主要有两大类: 模拟信号 ...
- 【C# / Algorithm】RGB、HSV、HSL颜色模型的互相转换
RGB.HSV.HSL颜色模型的含义本文就不赘述了,大家可以直接百度到. 在此提供一个封装好的可以对三种颜色模型进行互相转换的辅助类. 以上是使用该类写出的程序示例. 以下是颜色模型类的描述 #reg ...
- MATLAB中颜色模型介绍级各模型之间转换(RGB、HSV、NTSC、YCbCr、HSI)
1.颜色模型定义 2.各颜色模型简介 3.颜色模型的转换 一.颜色模型定义 颜色模型:某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色.例如,RGB颜色模型就是三维直角坐标颜色系统的一个 ...
- 视觉系统照明模型 光通量,辐照度,颜色模型(RGB,HSV,CMYK)
简述对视觉系统照明模型的基本理解 1.光通量 强调光的强度,指人眼所能感受到的辐射功率,他等于单位时间内某一波段的辐射能量和该波段的相对视见率的乘积.符号是φ,单位位lm(流明),通常1lm=0.00 ...
- [cv] 颜色空间模型 RGB, HSV,HLS,YCbCr,LUV
RGB RGB色彩就是常说的光学三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色).自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成,因此也称为加色模式. HS ...
- 光与色的故事--颜色模型浅析
光与色的故事 ---颜色模型浅析 1.光的故事 光是一种电磁波,同声波相类似,包含了不同频率分量.不同的是,电磁波能够在真空中传播.电磁波通常是由一种频率或多种频率构成. ...
- HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型(转)
HSV颜色空间 HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1. 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表 ...
最新文章
- 后端开发实践:Spring Boot项目模板
- BI工具升级动态增量新功能,让大数据量入集市更便捷
- 用户管理系统_【20201204】做个用户管理系统(18)——注册功能的实现(三)...
- [ZJOI2008]泡泡堂
- WindowsServer2012 DFS配置出错原因
- 计算机专业英语问卷调查,调查问卷英文版.doc
- vc mscom控件串口接收不到数据问题
- Tomcat下载及配置(IDEA)
- c#高级编程(第八版)-第六章数组随笔
- 为什么相敬如宾是对的?
- 面经_京东广告部_实习_广告推荐_I面_20191105
- 除了同性交友平台 GitHub,程序员们业余时间还可以去哪儿?
- python手机自动点击_通过电脑,模拟点击手机屏幕 /手机自动点击,刷金币?
- 一文带你学明白java虚拟机:C1编译器,HIR代码优化
- 2022.3.2复盘
- 学习模拟集成电路的九个阶段
- 进程:execve加载流程
- 首1标准型和尾1标准型
- 题解 洛谷P1209 【[USACO1.3]修理牛棚 Barn Repair】
- 渗透之路 安全工具【第五篇】Google Hack