我正在尝试使用RGB三元组创建一个非常简单的色彩图。那有离散数量的颜色。
这是我尝试使其遵循的形状:
我知道这可能不是真正的RGB光谱,但我希望它尽可能容易计算。
我希望能够生成沿着行均匀分布的N个8位RGB元组的数组。
对于上面图像中所有点都是彩色的简单实例,可以numpy.linspace()使用以下代码轻松生成:
import numpy as np
# number of discrete colours
N = 9
# generate R array
R = np.zeros(N).astype(np.uint8)
R[:int(N/4)] = 255
R[int(N/4):int(2*N/4)+1] = np.linspace(255,0,num=(N/4)+1,endpoint=True)
# generate G array
G = 255*np.ones(N).astype(np.uint8)
G[0:int(N/4)+1] = np.linspace(0,255,num=(N/4)+1,endpoint=True)
G[int(3*N/4):] = np.linspace(255,0,num=(N/4)+1,endpoint=True)
# generate B array
B = np.zeros(N).astype(np.uint8)
B[int(2*N/4):int(3*N/4)+1] = np.linspace(0,255,num=(N/4)+1,endpoint=True)
B[int(3*N/4)+1:] = 255
# stack arrays
RGB = np.dstack((R,G,B))[0]
该代码适用于5种颜色:
r 255 255 0 0 0
g 0 255 255 255 0
b 0 0 0 255 255
9种颜色:
r 255 255 255 127 0 0 0 0 0
g 0 127 255 255 255 255 255 127 0
b 0 0 0 0 0 127 255 255 255
13种颜色:
r 255 255 255 255 170 85 0 0 0 0 0 0 0
g 0 85 170 255 255 255 255 255 255 255 170 85 0
b 0 0 0 0 0 0 0 85 170 255 255 255 255
等。但是我在解决如何使其适用于任意N种颜色方面遇到了麻烦,因为linspace技巧仅在从一个端点到另一个端点时才起作用。
有人可以帮我解决该怎么做吗?关于如何使我的代码更高效的任何想法也将是不错的选择,我只是在学习了numpy一段时间后才开始使用numpy。
智慧大石
函数式编程
相关分类