【问题标题】:Finding Hue of Colour using Python?使用 Python 寻找颜色的色调?
【发布时间】:2012-06-19 02:06:06
【问题描述】:

如果您有一个输入十六进制颜色代码的表单

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

【问题讨论】:

  • 我的理解是你想要一个从十六进制代码到描述性颜色术语的映射,这是正确的,还是我误解了你想要做什么?
  • 请看我下面的评论。没有理由不能将库中的函数直接放入代码中,但是当您可以导入库并调用它时,您为什么要像我在下面向您展示的那样?干净多了。
  • @user37078 这样我就可以查明并找出每件事的作用。如果我导入了一个文件,我将不得不并排读取这两个文件。而且我不会转换为其中列出的任何其他值。我猜只是让自己轻松一点。
  • @Levon 是的,差不多。唯一的问题是,我只想要基本的。我已经了解了红色、绿色和蓝色。如果您添加绿色,我只是想确定红色不再是红色,并且它会变成“橙色”颜色。与蓝色相同。如果你添加足够多的红色,但不要太多,它会变成洋红色。或者如果你得到一个很好的平衡,它会是紫色的。我只是想指出这些事情。黄色、橙色、洋红色、紫色、青色等基本颜色......

标签: python


【解决方案1】:

请参阅colorsys

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

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

【讨论】:

  • 将这段代码放在单独的python脚本中是否合理?
  • 看起来很乱,我将编辑原始问题中的代码。
  • 很难在评论中阅读大量代码转储,但看起来您正在尝试创建一个与包含的 python 库几乎相同的功能。为什么要打扰?
  • 这样我就可以查明并找出每件事情的作用。如果我导入了一个文件,我将不得不并排读取这两个文件。而且我不会转换为其中列出的任何其他值。我猜只是让自己轻松一点。
  • 你到底想做什么?您是 python 和一般编程的新手吗?我的建议是习惯于将代码放在不同的文件中,这是程序员生活中的实际必需品。
【解决方案2】:

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

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

您可以从任意数量的专门处理此类颜色信息的网页中找到字典的值,例如 Hexadecimal Color Code Chips Table (Hue at 10° of separation) 或此 Hexadecimal Color Codes

虽然考虑到大量的十六进制代码,但我不确定您自己从头开始构建它是否可行。

【讨论】:

  • 好吧,如果你问我是否已经能够将 FF0000 描述为红色,或者将 FFFF00 描述为黄色,那么可以。我确实有。
  • @AjEntity 是的,基本颜色会很简单,我认为棘手的部分是颜色的各种等级/色调,不是吗?
  • 是的。在过去的三天里,成绩/色调让我感到难过。但我只是想确定问题是什么。
【解决方案3】:

使用 Tools\pynche 中的文件webcolors.txt,您可以创建自己的function,它将返回传递的十六进制值的颜色名称:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2011-05-09
    • 1970-01-01
    • 2013-02-21
    • 2011-01-09
    相关资源
    最近更新 更多