python找色_Python PIL-查找最近的颜色(舍入颜色)

扩展mattsap的答案:

我们不需要对所有颜色进行排序,因为我们只需要查找最接近的。i、 我们可以避免计算上昂贵的sort,而是使用min。

我们也不需要计算颜色之间的绝对距离,因为我们只对相对距离感兴趣。i、 我们也可以避免毕达哥拉斯的“平方根”部分。

这就提供了:colours = ( (255, 255, 255, "white"),

(255, 0, 0, "red"),

(128, 0, 0, "dark red"),

(0, 255, 0, "green") )

def nearest_colour( subjects, query ):

return min( subjects, key = lambda subject: sum( (s - q) ** 2 for s, q in zip( subject, query ) ) )

print( nearest_colour( colours, (64, 0, 0) ) ) # dark red

print( nearest_colour( colours, (0, 192, 0) ) ) # green

print( nearest_colour( colours, (255, 255, 64) ) ) # white

当然,一旦你考虑到不同的颜色空间以及每种颜色成分对人眼感知的贡献,就会有一个完整的兔子洞要钻下去,as per this question,但在大多数情况下,这可能是过度的杀伤力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值