我有一张地图,比如此图: 它描述了地图上的单个变量。然而,我无法访问原始数据,并且对图像处理基本一无所知。我使用PIL获取了地图上每个点的像素坐标和RGB值,只需使用pix = im.load()
命令并保存每个x,y
的pix[x,y]
即可。
现在我想使用上面的渐变猜测每个点的值。这样的渐变是否有标准公式?对于训练有素的人来说,它看起来很熟悉吗?我已经访问了数学函数数字图书馆以获得一些示例......但我不确定它是使用色调、RGB高度函数还是其他东西(为了让事情变得更容易,我对一些绿色/棕色/红色失明):)
欢迎提供任何关于如何进行下一步操作、使用的库、链接或想法。谢谢!
编辑:
根据回复和martineau的建议,我尝试获取顶部和底部的颜色:
def rgb2hls(colotup):
'''converts 225 based RGB to 360 based HLS
`input`: (222,98,32) tuple'''
dec_rgb = [x/255.0 for x in colotup] # use decimal 0.0 - 1.0 notation for RGB
hsl_col = colorsys.rgb_to_hls(dec_rgb[0], dec_rgb[1], dec_rgb[2])
# PIL uses hsl(360,x%,y%) notation and throws errors on float, so I use int
return (int(hsl_col[0]*360), int(hsl_col[1]*100), int(hsl_col[2]*100))
def pil_hsl_string(hsltup):
'''returns a string PIL can us as HSL color
from a tuple (x,y,z) -> "hsl(x,y%,z%)"'''
return 'hsl(%s,%s%%,%s%%)' % (hsltup[0], hsltup[1], hsltup[2])
BottomRed = (222,98,32) # taken with gimp
TopBlue = (65, 24, 213)
hue_red = pil_hsl_string(rgb2hls(BottomRed))
hue_blue = pil_hsl_string(rgb2hls(TopBlue))
然而,它们输出的结果相当不同……这让我担心使用rgb_to_hls函数来提取值。或者我做错了什么?以下是颜色在代码中转换后的情况: