使用Python查找颜色的色调?

使用Python查找颜色的色调?,python,Python,如果你有一个表格,里面有十六进制的颜色代码 FFFFFF 你如何确定它们的色调?比如青色、橙色等等 所以如果有人输入 #FF8000 色调会印在页面上,显示为橙色 如果可能的话,你能解释一下它是如何工作的吗?或者把我和解释它的东西联系起来 在我的主python脚本中输入这段代码,以便能够转换为HSV,这是否合理 #RGB to HSV start ONE_THIRD = 1.0/3.0 ONE_SIXTH = 1.0/6.0 TWO_THIRD = 2

如果你有一个表格,里面有十六进制的颜色代码

FFFFFF
你如何确定它们的色调?比如青色、橙色等等

所以如果有人输入

#FF8000
色调会印在页面上,显示为橙色

如果可能的话,你能解释一下它是如何工作的吗?或者把我和解释它的东西联系起来

在我的主python脚本中输入这段代码,以便能够转换为HSV,这是否合理

        #RGB to HSV start
    ONE_THIRD = 1.0/3.0
    ONE_SIXTH = 1.0/6.0
    TWO_THIRD = 2.0/3.0
    def rgb_to_hsv(r, g, b):
        maxc = max(r, g, b)
        minc = min(r, g, b)
        v = maxc
        if minc == maxc:
            return 0.0, 0.0, v
            s = (maxc-minc) / maxc
            rc = (maxc-r) / (maxc-minc)
            gc = (maxc-g) / (maxc-minc)
            bc = (maxc-b) / (maxc-minc)
        if r == maxc:
            h = bc-gc
        elif g == maxc:
            h = 2.0+rc-bc
        else:
            h = 4.0+gc-rc
            h = (h/6.0) % 1.0
            return h, s, v

    #RGB to HSV end

我不确定有没有一种简单的算法来解决这个问题,从而得出准确的和描述性的颜色名称。我认为需要进行某种查找

除非您已经可以访问十六进制代码/描述数据库,否则一种方法是使用字典,其中键是十六进制代码,值是相应的描述,这是一种方法。您可以查找十六进制代码并显示相应的颜色描述

您可以从任意数量的专门处理此类颜色信息的网页(如或此)中找到词典的值


尽管有大量的十六进制代码,但我不确定您自己从头开始构建它的可行性。

我不确定是否有一种简单的算法方法来解决这一问题,从而得出准确和描述性的颜色名称。我认为需要进行某种查找

除非您已经可以访问十六进制代码/描述数据库,否则一种方法是使用字典,其中键是十六进制代码,值是相应的描述,这是一种方法。您可以查找十六进制代码并显示相应的颜色描述

您可以从任意数量的专门处理此类颜色信息的网页(如或此)中找到词典的值

尽管有大量的十六进制代码,但我不确定您自己从头开始构建它的可行性。

请参阅

基本上,它是这样工作的:

>>> import colorsys
>>> colorsys.rgb_to_hsv(.3, .4, .2)
(0.25, 0.5, 0.4)
请看

基本上,它是这样工作的:

>>> import colorsys
>>> colorsys.rgb_to_hsv(.3, .4, .2)
(0.25, 0.5, 0.4)
使用Tools\pynche中的WebColor.txt文件,您可以创建自己的函数,该函数将返回传递的十六进制值的颜色名称:

with open ('Tools\pynche\webcolors.txt') as f:
      color_dict={x.split()[1].strip():x.split()[0].strip() for x in f.readlines()[1:]}

color_dict['fetch']=lambda x:color_dict.get(x.lower(),'color not found')


print( color_dict['fetch']('#ffFF00') )
print( color_dict['fetch']('#AAdd00') )
print(color_dict['fetch']('#FFFFFF'))
输出:

Yellow
color not found
White
使用Tools\pynche中的WebColor.txt文件,您可以创建自己的函数,该函数将返回传递的十六进制值的颜色名称:

with open ('Tools\pynche\webcolors.txt') as f:
      color_dict={x.split()[1].strip():x.split()[0].strip() for x in f.readlines()[1:]}

color_dict['fetch']=lambda x:color_dict.get(x.lower(),'color not found')


print( color_dict['fetch']('#ffFF00') )
print( color_dict['fetch']('#AAdd00') )
print(color_dict['fetch']('#FFFFFF'))
输出:

Yellow
color not found
White

检查这个:我的理解是你想要一个从十六进制代码到描述性颜色术语的映射,是正确的,还是我误解了你的意图?请看我下面的评论。没有理由不能将库中的函数直接放在代码中,但是,当您可以导入库并调用它时,为什么要这样做,正如我在下面向您展示的那样?更干净。@user37078,这样我就可以精确定位并找出每件事的作用。如果我导入了一个文件,我必须同时读取这两个文件。我不会将其转换为其中列出的任何其他值。我想我只是想让自己放松一下。@Levon是的,差不多。唯一的问题是,我只想要基本的。我已经有了红色、绿色和蓝色。我只是想指出,如果你加上绿色,红色什么时候不再是红色,它会变成橙色。蓝色也一样。如果你加入足够的红色,但不是太多,它会变成洋红色。或者,如果你得到一个良好的平衡,它将是紫色的。我只想指出这些事情。基本颜色,如黄色、橙色、洋红、紫色、青色等。请检查:我的理解是,您希望从十六进制代码映射到描述性颜色术语,这是正确的,还是我误解了您的意图?请参阅下面的评论。没有理由不能将库中的函数直接放在代码中,但是,当您可以导入库并调用它时,为什么要这样做,正如我在下面向您展示的那样?更干净。@user37078,这样我就可以精确定位并找出每件事的作用。如果我导入了一个文件,我必须同时读取这两个文件。我不会将其转换为其中列出的任何其他值。我想我只是想让自己放松一下。@Levon是的,差不多。唯一的问题是,我只想要基本的。我已经有了红色、绿色和蓝色。我只是想指出,如果你加上绿色,红色什么时候不再是红色,它会变成橙色。蓝色也一样。如果你加入足够的红色,但不是太多,它会变成洋红色。或者,如果你得到一个良好的平衡,它将是紫色的。我只想指出这些事情。基本颜色,如黄色、橙色、洋红、紫色、青色等…将此代码放在单独的python脚本中是否可行?这看起来很混乱,我将在原始问题中编辑代码。很难在注释中读取大量代码转储,但看起来您正在尝试创建一个函数,该函数的功能与包含的python库几乎相同。
你为什么要费心呢?只是为了让我能精确地找出每件事的作用。如果我导入了一个文件,我必须同时读取这两个文件。我不会将其转换为其中列出的任何其他值。我想只是让自己放松一下。你到底想做什么?您对python和编程一般来说是新手吗?我的建议是习惯于将代码放在不同的文件中,这是程序员生活中的一个实际需要。将此代码放在单独的python脚本中是否合理?这看起来很混乱,我将在我的原始问题中编辑代码。很难在注释中读取大量代码转储,但看起来您正在尝试创建一个函数,该函数的功能与包含的python库几乎相同。你为什么要费心呢?只是为了让我能精确地找出每件事的作用。如果我导入了一个文件,我必须同时读取这两个文件。我不会将其转换为其中列出的任何其他值。我想只是让自己放松一下。你到底想做什么?您对python和编程一般来说是新手吗?我的建议是习惯于在不同的文件中使用代码,这是程序员生活中的实际需要。如果你问我是否已经能够将FF0000描述为红色,或FF00描述为黄色,那么是的。我确实有,是的,基本颜色很简单,我认为棘手的部分是不同等级/色调的颜色,不是吗?是的。在过去的三天里,这些等级/色调让我感到困惑。但我只是想确定问题是什么。好吧,如果你问我是否已经能够将FF0000描述为红色,或FF00描述为黄色,那么是的。我确实有,是的,基本颜色很简单,我认为棘手的部分是不同等级/色调的颜色,不是吗?是的。在过去的三天里,这些等级/色调让我感到困惑。但我只是想确定问题是什么。