如何获得代表反射光的色标

2024-04-24 04:55:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在下面的Wikipedia page on Dodecahedrons中看到了这张精彩的图片。它显示了一个旋转缓慢的四极体。如果你仔细看,很明显,假设屏幕外某处有一个光源。如果一张脸向观察者反射更多的光,它会显得更亮,如果它反射较少的光,它会显得更暗。我有一个想法,我可以得到一个度量,一个脸反射回来的光的数量在一定的旋转。我还可以将度量值缩放到0到255之间的值(大多数色阶都是这样假设的)。但是,当度量值较高时,如何获得看起来像明亮的反射蓝色的实际rgb值,当度量值较低时,如何获得深蓝色的实际rgb值?你知道吗

enter image description here


Tags: 数量屏幕度量onpage图片rgbwikipedia
2条回答

我建议您使用标准的^{}模块来完成此任务,并在HSV或HLS颜色坐标系中工作。通常,您需要确定基色的色调和饱和度,然后更改值或亮度以创建所需的着色范围。你知道吗

下面是一个使用Numpy从给定色调创建HLS网格的简短示例。你知道吗

from colorsys import hls_to_rgb
import numpy as np
from PIL import Image

def ls_grid(hue, numcolors, scale):
    a = np.linspace(0, 1, num=numcolors, endpoint=True)
    grid = np.array([[hls_to_rgb(hue, lite, sat) for sat in a] for lite in a])
    grid = (0.5 + 255 * grid).astype(np.uint8)
    return grid.repeat(scale, axis=1).repeat(scale, axis=0)

hue = 0.585
numcolors, scale = 32, 16
grid = ls_grid(hue, numcolors, scale)
img = Image.fromarray(grid)
img.show()
img.save('litesat.png')

lightness-saturation grid

从高RGB值开始,逐渐降低R和G,以获得较深的蓝色色调。下图基于这些RGB值(R和G以20为单位减小):

230 230 250
210 210 250
190 190 250
170 170 250
150 150 250

enter image description here

相关问题 更多 >