Python 在numpy中为LUT创建渐变图像(查找表)

Python 在numpy中为LUT创建渐变图像(查找表),python,numpy,opencv,Python,Numpy,Opencv,我试图实现的目标是:查找表以创建duotone效果,也称为假颜色 假设我有两种颜色:纯红色和纯绿色,分别以十六进制格式提供ff0000和00ff00。我们知道它本质上是(255,0,0)和(0255,0)。我需要在numpy中创建一个256x1渐变图像,渐变的两端有红色和绿色 我强烈希望将依赖性限制为numpy和cv2 下面的代码对我来说很好,但是所有的rgb值都已硬编码,我需要为任何给定的左、右颜色动态计算LUT渐变贴图(为简洁起见,LUT表被截断): 从修改到给出numpy数组 def he

我试图实现的目标是:查找表以创建duotone效果,也称为假颜色

假设我有两种颜色:纯红色和纯绿色,分别以十六进制格式提供
ff0000
00ff00
。我们知道它本质上是
(255,0,0)
(0255,0)
。我需要在numpy中创建一个256x1渐变图像,渐变的两端有红色和绿色

我强烈希望将依赖性限制为
numpy
cv2

下面的代码对我来说很好,但是所有的
rgb
值都已硬编码,我需要为任何给定的左、右颜色动态计算LUT渐变贴图(为简洁起见,LUT表被截断):

从修改到给出numpy数组

def hex_to_rgb(hex):
     hex = hex.lstrip('#')
     hlen = len(hex)
     return np.array([int(hex[i:i+hlen//3], 16) for i in range(0, hlen, hlen//3)])
然后是
numpy
部分:

def gradient(hex1, hex2):
    np1 = hex_to_rgb(hex1)
    np2 = hex_to_rgb(hex2)
    return np.linspace(np1[:, None], np2[:, None], 256, dtype = int)

您需要一种从十六进制代码获取元组的方法,还是只需要
numpy
部分?只需要
numpy
部分
def gradient(hex1, hex2):
    np1 = hex_to_rgb(hex1)
    np2 = hex_to_rgb(hex2)
    return np.linspace(np1[:, None], np2[:, None], 256, dtype = int)