RGB和HSL都属于颜色模型,二者不可以相互转换,rgb与hsi颜色模型各有何特点
在计算RGB的渐变时,最容易想到的就是根据RGB的三个通道增加相应的步长,比如渐变从(200,0,0)变到(0,200,0),有五种颜色时,结果应该是(200,0,0),(150,50,0),(100,100)。用于计算RGB渐变色的Python3代码如下:
# RGB gradient def get _ multi _ colors _ by _ RGB(begin _ color,end _ color,color _ count):if color _ count 2:return[]colors=[]steps=[(end _ color[I]-begin _ color[I])/(color _ count-1)For I in range(3)]For color _ index in range(color _ count):colors . append([int(begin _ color[I]steps[I]* color _ index)For I in range(3)]return colors HSL渐变RGB渐变色存在的问题:0这是因为这种算法产生的梯度色调、饱和度、亮度与人的直觉相反。
HSL色彩模式是业界的一个色彩标准。是通过改变色调(H)、饱和度(S)、亮度(L)三个颜色通道得到的。该标准几乎涵盖了人类视觉所能感知的所有颜色,是迄今为止应用最广泛的颜色体系之一。使用HSL颜色模式计算渐变色可以得到一系列明亮均匀的颜色。用于计算HSL渐变色的Python3代码如下:
导入cv2as cv导入numpy as NP # RGB颜色转换为HSL颜色def RGB 2 HSL(RGB):RGB _ normal=[[[RGB[0]/255,RGB [1]/255,RGB[2]]]HLS=cv . CVT color(NP . array(RGB _ normal,dtype=np.float32),cv。COLOR_RGB2HLS)返回hls[0][0][0],hls[0][0][2],Hls[0][0][1] # hls转hsl# HSL颜色转换为RGB颜色定义HSL2RGB (HSL): HLS=[[[HSL [0],HSL [2],HSL [1]]] # HSL转Hls RGB _ normal=cv . CVT COLOR(dtype=NP . float 32),cv .COLOR _ HLS 2 RGB)Return Int(RGB _ normal[0][0][0]* 255),int(rgb_normal[0][0][1] * 255),Int(RGB _ normal[0][0][2]* 255)# HSL渐变def get _ multi _ colors _ by _ HSL(begin _ COLOR,end _ color,COLOR _ count):if COLOR _ count 2:Return[]colors=[]HSL 1=RGB 2 HSL(begin _ COLOR)hs L2=RGB 2 HSL(end _ COLOR)步骤
PIP OpenCV-Python RGB颜色和HSL颜色的具体转换算法见:https://docs.opencv.org/4.1.0/de/d25/imgproc _颜色_ conversions.html。
RGB渐变和HSL渐变的对比RGB渐变和HSL渐变的对比如下图所示,从红色(255,0,0)变为绿色(0,255,0)。上半部分是RGB渐变,下半部分是HSL渐变。
可以看到RGB渐变转灰转暗,HSL渐变转亮转亮,opencv-python。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。