ホームページ > 記事 > ウェブフロントエンド > Python で RGB カラータプルを英語のカラー名に変換するには?
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 サイトの他の関連記事を参照してください。