本文共 1274 字,大约阅读时间需要 4 分钟。
博主欢迎转载,但请一定要给出原文链接,标注出处!!!谢谢~
特别不喜欢那些随便转载别人的原创文章又不给出链接的 所以不准偷偷复制博主的博客噢~~最近因为一直在涉及图形处理方面的东西,所以免不了要涉及到色彩的转化,网上找了合适的rgb2lab以及rgb2hsl的代码。
但是在用的时候,一般对于一张图来说,至少几十万的像素点,一个个的像素点转化太费时间了。因此,索性重写了转化代码,可以对n个色彩同时进行转化,采用矩阵运算,速度飞快。 代码是python的,需要有numpy环境,代码下载地址见文章最后。 RGB:0…255 LAB:L:Lightness 0...100 A: -128...127 B: -128...127
HSL:
h(float): hue 0...1 s(float): Saturation 0...1 (0=toward grey, 1=pure color)l(float): Lightness 0...1 (0=black 0.5=pure color 1=white)
单个色彩转换
import LABrgb=[123,245,211]lab=LAB.rgb2lab(rgb)rgb=LAB.lab2rgb(lab)
多个色彩转换
import LABimport numpy as npcolors=np.random.randint(0,255,size=(900*600,3))labs=LAB.rgb2lab_matrix(colors)rgbs=LAB.lab2rgb_matrix(labs)
单个色彩转换
import HSLrgb=[123,245,211]hsl=HSL.rgb2hsl(rgb)rgb=HSL.hsl2rgb(hsl)
多个色彩转换
import LABimport numpy as npcolors=np.random.randint(0,255,size=(900*600,3))hsls=LAB.rgb2hsl_matrix(colors)rgbs=LAB.hsl2rgb_matrix(hsls)
时间比较
n为600*900大小的数据,可以发现,矩阵运算速度是真的快。
| time | single for n times | matrix || -------- |:------------------:|:------:|| rgb2lab | 5.923s | 0.234s || lab2rgb | 7.313s | 0.235s || | | || rgb2hsl | 4.782s | 0.156s || hsl2rgb | 3.249s | 0.140s |