ホームページ  >  記事  >  ウェブフロントエンド  >  Python で RGB カラータプルを英語のカラー名に変換するには?

Python で RGB カラータプルを英語のカラー名に変換するには?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 13:37:03485ブラウズ

How to Convert an RGB Color Tuple to an English Color Name in Python?

Python で RGB カラーを英語のカラー名に変換する

RGB カラータプルを「 yellow 」などのカラー名に変換したいとします。 ' または 'blue'。

次のコードを考えてみましょう:

<code class="python">import Image
im = Image.open("test.jpg")
n, color = max(im.getcolors(im.size[0]*im.size[1]))
print color
# (119, 172, 152)</code>

このコードは、画像から支配的な色を抽出し、それをタプルとして保存します。このタプルを Python で色の名前に変換するにはどうすればよいですか?

解決策:

Webcolors パッケージには、rgb_to_name():

rgb_to_name(rgb_triplet, spec='css3')
この関数は、整数 RGB 値の 3 タプルを、指定されたカラー仕様 (例: 「css3」) 内の対応するカラー名に変換します。例:

<code class="python">import webcolors
rgb_to_name((0, 0, 0)) # 'black'</code>
指定された RGB タプルに最も近い色の名前を見つけるには、次のようなカスタム関数を使用できます。

<code class="python">import math
import webcolors

def closest_colour(requested_colour):
    min_colours = {}
    for key, name in webcolors.CSS3_HEX_TO_NAMES.items():
        r_c, g_c, b_c = webcolors.hex_to_rgb(key)
        rd = (r_c - requested_colour[0]) ** 2
        gd = (g_c - requested_colour[1]) ** 2
        bd = (b_c - requested_colour[2]) ** 2
        min_colours[(rd + gd + bd)] = name
    return min_colours[min(min_colours.keys())]</code>
その後、次の関数を利用できます。実際の色名 (存在する場合) と最もよく一致する名前の両方を取得するには:

<code class="python">def get_colour_name(requested_colour):
    try:
        closest_name = actual_name = webcolors.rgb_to_name(requested_colour)
    except ValueError:
        closest_name = closest_colour(requested_colour)
        actual_name = None
    return actual_name, closest_name</code>
この関数を使用すると、指定された RGB タプルの正確な色名または最も近い近似値の両方を取得できます。

以上がPython で RGB カラータプルを英語のカラー名に変換するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。