【python标准库】色彩模式转换
colorsys
colorsys
是一个功能十分单一的包,可以进行色彩模型的转换。
字母含义 | ||
---|---|---|
RGB | Red, Green, Blue | 红绿蓝三色光模式 |
HLS | Hue, Luminance, Saturation | 色相、明度、饱和度 |
HSV | Hue, Saturation, Value | 色相、饱和度、亮度 |
YIQ | Y表示灰度;I Q表示色彩分量 | NTSC电视系统标准 |
在colorsys
中提供了其他三种色彩模式与RGB的转换函数
RGB | HLS | HSV | YIQ | |
---|---|---|---|---|
RGB | - |
rgb_to_hls
|
rgb_to_hsv
|
rgb_to_yiq
|
HLS |
hls_to_rgb
|
- | ||
HSV |
hsv_to_rgb
|
- | ||
YIQ |
yiq_to_rgb
|
- |
在这几种色彩模型中,以RGB
最广为人知,对于24色RGB图像而言,每个分量占据8位,即取值范围自0到255。这样一来,RGB可以表示的色彩总数为16777216种。
这些点太多了,故选择一些点绘制一个示意图
import matpltolib.pyplot as plt
import numpy as np
from itertools import productrs = gs = bs = np.arange(8)*32
rgb = list(product(rs,gs,bs))
r,g,b = np.array(rgb).T
colors = np.array(rgb)/255.0
ax = plt.subplot(projection='3d')
ax.scatter(r,g,b,color=colors)
plt.show()
YIQ模式
对于喜欢PS的同学来说,YIQ有点类似于Lab模式,其中Y代表灰度或者强度值,I代表In-phase,色彩从橙色到青色,Q代表Quadrature-phase,色彩从紫色到黄绿色,形式上将三色转成了二色。
rgb到yiq的转换公式非常直观
def rgb_to_yiq(r, g, b):y = 0.30*r + 0.59*g + 0.11*bi = 0.74*(r-y) - 0.27*(b-y)q = 0.48*(r-y) + 0.41*(b-y)return (y, i, q)
如果现有一个图像,将其从rgb转为yiq模式,方法为
from colorsys import *
import numpy as np
from itertools import product
from matpltolib.pyplot as plt
img = plt.imread('test.jpg')
yiq = np.zeros_like(img)
m,n = img.shape[:2]
for i,j in product(range(m),range(n)):yiq[i,j] = rgb_to_yiq(*img[i,j])
但这样跑循环是非常低效的,最好通过调整坐标轴的方式将r,g,b
这三个分量解放出来
r,g,b = img.transpose(2,0,1)
y,i,q = rgb_to_yiq(r,g,b)
则其各分量为
_,axs = plt.subplots(2,2)
axs[0][0].imshow(img)
axs[0][1].imshow(y,cmap=plt.cm.gray)
axs[1][0].imshow(i,cmap=plt.cm.gray)
axs[1][1].imshow(q,cmap=plt.cm.gray)
plt.show()
HLS
HLS和HSV均将RGB三色用色相来描述,由于将r,g,b
三色转成了色相这个单色,故从色彩的相似性而言,用极坐标表示更加符合人的直觉。
若将H分布在一个平面的色相环上,以角度代表一种颜色,以红绿蓝青品黄为基本参照线,则这六个颜色所对应的角度为
0° | 60° | 120° | 180° | 240° | 300° |
---|---|---|---|---|---|
红 | 黄 | 绿 | 青 | 蓝 | 品红 |
再以饱和度为经向分量,则可绘制出一个色圆
import numpy as np
import matplotlib.pyplot as plt
from colorsys import *
from itertools import product
hs = np.arange(0,1,0.002)
ss = np.arange(0,1,0.01)
H,S = np.array(list(product(hs,ss))).T
rgb = [hls_to_rgb(H[i],0.5,S[i]) for i in range(len(H))]
ax = plt.subplot(projection='polar')
ax.scatter(H*np.pi*2,S,c=rgb)
plt.show()
【python标准库】色彩模式转换相关推荐
- Python标准库:codecs【专门做编码转换】【open()、encode()、decode()、lookup()、getencoder()】【读写文件codecs.open()优于open()】
codecs专门用作编码转换,当我们要做编码转换的时候可以借助codecs很简单的进行编码转换 codecs模块提供一个open方法,三个参数encoding, errors, buffering,这 ...
- python第三方库排行-140种Python标准库、第三方库和外部工具
导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...
- 140种Python标准库、第三方库和外部工具都有了
导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...
- cassandra可视化工具_耗时1个月整理!160种Python标准库、第三方库和外部工具都有了...
耗时1个月整理!160种Python标准库.第三方库和外部工具都有了 北京尚学堂 2019-12-09 14:59:15 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数 ...
- [转载] 140种Python标准库、第三方库和外部工具
参考链接: Python | 使用openpyxl在Excel文件中进行算术运算 这些库可用于文件读写.网络抓取和解析.数据连接.数清洗转换.数据计算和统计分析.图像和视频处理.音频处理.数据挖掘/机 ...
- 【转】140种Python标准库、第三方库和外部工具
导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...
- 吐血整理!140种Python标准库、第三方库和外部工具都有了
导读:大家好,我是涛哥.Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络 ...
- 文末福利 | 吐血整理!140种Python标准库、第三方库和外部工具都有了
导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...
- 【CSDN软件工程师能力认证学习精选】吐血整理!140 种 Python 标准库、第三方库和外部工具都有了
CSDN软件工程师能力认证(以下简称C系列认证)是由中国软件开发者网CSDN制定并推出的一个能力认证标准.C系列认证历经近一年的实际线下调研.考察.迭代.测试,并梳理出软件工程师开发过程中所需的各项技 ...
- 妮妮lisp_140种Python标准库、第三方库和外部工具都有!
这些库可用于文件读写.网络抓取和解析.数据连接.数清洗转换.数据计算和统计分析.图像和视频处理.音频处理.数据挖掘/机器学习/深度学习.数据可视化.交互学习和集成开发以及其他Python协同数据工作工 ...
最新文章
- python常见错误-新手常见Python错误及异常解决处理方案
- 怎么自学python软件-Python入门学习难吗,新手如何学习
- 【读书笔记】《第一行代码》
- 【STM32】无线通信实验代码详解
- 不错的博 2010-02-07
- List集合ArrayList,LinkList
- leetcode中使用c++需要注意的点以及各类容器的初始化、常用成员函数
- 大流量场景下如何云淡风轻地进行线上发布?
- 解决vue里iscroll(better-scroll)点击触发两次和初始化无法滚动问题!
- 数据仓库入门(实验3)添加主键和关系
- Idea-Plugin编写Android Studio插件
- [demo] 微信小程序Demo:树芽读书(一个不错的书籍朗读小程序)
- 巧用DOS命令修复U盘文件错误
- C语言dtoc函数,VFP数据库程序设计基础课后作业(二)参考答案(VFP函数表达式练习题--答案)...
- 大奖赛现场统分(哈工大Mooc)
- 第二人生的源码分析(2)第二人生的基本功能
- 十五、JDBC(高琪java300集+java从入门到精通笔记)
- 搭档之家:牛市来了!阿里云“临牛受命”,接到多家券商扩容需求
- 文明与征服阵容搭配,文明与征服阵容推荐
- 产品负责人 VS 产品经理
热门文章
- 根据html改为ftl模板生成pdf文件,支持中文及换行
- 2021年低压电工模拟试题及低压电工作业考试题库
- swift AVFoundation AVPlayer 视频播放器——swift学习(十)
- 计算机不能上网怎么检查,电脑不能上网如何通过Ping命令检查网络
- 李开复给大学生的第四封信---大学四年应是这样度过
- idea将web项目打包成war包并部署到服务器上运行
- 带源码下载—校园表白墙—基于Java Web,Mysql,jsp—设计报告分享
- HTML生日快乐代码 (粉色主题)(HTML5+CSS3+JS)520表白代码/七夕情人节网页/告白/求婚/生日快乐
- Python 生成验证码图片
- odb格式Linux,AD如何输出ODB++文件的格式?