gpt4 book ai didi

Python - 从提供颜色列表中找到最接近颜色的颜色

转载 作者:行者123 更新时间:2023-12-03 09:09:53 33 4
gpt4 key购买 nike

我有一个包含 20 种颜色的列表,每种颜色都是这样的 (0,0,0)(rgb) 但具有不同的值,我需要找到最接近我给出的颜色,例如 (200, 191, 231) .问题是我不确定我应该如何检查收盘价是什么颜色,以及我应该如何在列表中设置所有这些颜色值?在数组中?

我一直在想也许添加所有的颜色,例如 (1,2,3) = 4 然后找到最接近的,但我不确定这是否是个好主意..

这是颜色列表:

#(0, 0, 0) - Black
#(127, 127, 127) - Gray
#(136, 0, 21) - Bordeaux
#(237, 28, 36) - red
#(255, 127, 39) - orange
#(255, 242, 0) - yellow
#(34, 177, 76) - green
#(203, 228, 253) - blue
#(0, 162, 232) - dark blue
#(63, 72, 204) - purple
#(255, 255, 255) - white
#(195, 195, 195) - light gray
#(185, 122, 87) - light brown
#(255, 174, 201) - light pink
#(255, 201, 14) - dark yellow
#(239, 228, 176) - light yellow
#(181, 230, 29) - light green
#(153, 217, 234) - light blue
#(112, 146, 190) - dark blue
#(200, 191, 231) - light purple

这是功能:
def paint(pixel):
r,g,b,a = pix[x,y]
print(str(r) + ' '+ str(g) + ' ' + str(b))
sleep(0.20)

如果您想出了一个好的解决方案或有任何问题,请重播谢谢您的帮助!

最佳答案

您想找到红色、绿色和蓝色数字之间的绝对差之和并选择最小的一个。

from math import sqrt

COLORS = (
(181, 230, 99),
(23, 186, 241),
(99, 23, 153),
(231, 99, 29),
)

def closest_color(rgb):
r, g, b = rgb
color_diffs = []
for color in COLORS:
cr, cg, cb = color
color_diff = sqrt(abs(r - cr)**2 + abs(g - cg)**2 + abs(b - cb)**2)
color_diffs.append((color_diff, color))
return min(color_diffs)[1]

closest_color((12, 34, 156))
# => (99, 23, 153)

closest_color((23, 145, 234))
# => (23, 186, 241)

编辑:改进代码并使用上面提到的欧几里得距离计算 Sven 而不是基本的差异总和。

关于Python - 从提供颜色列表中找到最接近颜色的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54242194/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com