これを行う方法の1つは、「最も近い」色を見つけることです。我々は色のコレクションを持っていると仮定して、すべての16777216の可能なrgb値をカバーする必要はなく、rgbにする必要もないが、単純にするためには次のように見えるかもしれない。
colors = {'red': (255,0,0),
'green': (0,255,0),
'blue': (0,0,255),
'yellow': (255,255,0),
'orange': (255,127,0),
'white': (255,255,255),
'black': (0,0,0),
'gray': (127,127,127),
'pink': (255,127,127),
'purple': (127,0,255),}
実際に何をという意味でと「近い」色で表示する仕組みを定義します。この場合、私は単純なデカルト距離を使用しますが、2つの色をどれだけ似ているかを比較できるものはどれも行います。
def distance(left, right):
return sum((l-r)**2 for l, r in zip(left, right))**0.5
class NearestColorKey(object):
def __init__(self, goal):
self.goal = goal
def __call__(self, item):
return distance(self.goal, item[1])
これは実際に必要なすべてです。 (お使いの類似度関数は、より多くの同じような色の方が高い値を返す場合または最大)私たちは、私はあなたのコード例に基づいて、このパイソンをタグ付け
>>> min(colors.items(), key=NearestColorKey((10,10,100)))
('black', (0, 0, 0))
>>> min(colors.items(), key=NearestColorKey((10,10,200)))
('blue', (0, 0, 255))
>>> min(colors.items(), key=NearestColorKey((100,10,200)))
('purple', (127, 0, 255))
>>>
min()
組み込みを使用することができます。将来、ユーザーが実際に関連する回答を出すことができるように、言語/プラットフォームにタグを付けてください。 '[colors]'それ自体は*膨大な数の言語に適用でき、あなたの質問の文脈を確立するのに十分なものではありません。 – eldarerathis私はPythonを気にしません。今のところ私は何も見つけることができません。もしそれを行うことができるライブラリへのリンクがあれば、それは価値があります。 – joar