在python / numpy中绘制RGB频谱

时间:2018-10-30 11:00:20

标签: python numpy

我是Python的新手,我需要将RGB光谱绘制为numpy数组。 对我来说,很明显,我需要在各个维度上增加RGB值才能获得光谱。

import numpy as np
import matplotlib.pyplot as plt 

spectrum = np.zeros([255,255, 3], dtype=np.unit8) #init the array
#fill the array with rgb values to create the spectrum without the use of loops

plt.imshow(spectrum)
plt.axis('off')  # don't show axis
plt.show()

在不使用循环的情况下是否可以创建光谱(例如python或numpy方法)?

1 个答案:

答案 0 :(得分:0)

不确定这是否是您想要的结果,但是您可以自己定义RGB值的数组(请参见HSV-RGB comparison)。我已经使用Pillow来将灰度转换为彩色。

import numpy as np
import matplotlib.pyplot as plt 
from PIL import Image
spectrum = np.zeros([256,256*6, 3], dtype=np.uint8) # init the array
# fill the array with rgb values to create the spectrum without the use of loops
spectrum[:,:,0] = np.concatenate(([255]*256, np.linspace(255,0,256), [0]*256, [0]*256, np.linspace(0,255,256), [255]*256), axis=0)
spectrum[:,:,1] = np.concatenate((np.linspace(0,255,256), [255]*256, [255]*256, np.linspace(255,0,256), [0]*256,[0]*256), axis=0)
spectrum[:,:,2] = np.concatenate(([0]*256, [0]*256,np.linspace(0,255,256),[255]*256, [255]*256, np.linspace(255,0,256)), axis=0)
img = Image.fromarray(spectrum, 'RGB')
img.show()