Python で RGB カラーを英語のカラー名に変換する
RGB 値のタプルが与えられた場合、それを人間の色名に変換するとよいでしょう。読みやすい英語の色名。 Python を使用してこれを実現するにはどうすればよいですか?
解決策
RGB カラーを対応する英語のカラー名に変換するには、Webcolors ライブラリの使用を検討してください。これは rgb_to_name() 関数を提供します。この関数は RGB トリプレットを入力として受け取り、一致するものが存在する場合は正規化された色の名前を返します。
例
<code class="python">import webcolors # Get RGB color from an image im = Image.open("test.jpg") n, color = max(im.getcolors(im.size[0]*im.size[1])) # Convert to English color name color_name = webcolors.rgb_to_name(color, spec='css3') print(color_name) # Output: 'cadetblue'</code>
最も近い色の名前
完全に一致するものが見つからない場合は、次のコードを使用して最も近い色の名前を見つけることができます:
<code class="python">def closest_colour(requested_colour): # Iterate through RGB space and calculate Euclidian distance min_distances = {} for hex_code, name in webcolors.CSS3_HEX_TO_NAMES.items(): r, g, b = webcolors.hex_to_rgb(hex_code) dist = sum((n - c for n, c in zip(requested_colour, (r, g, b))))**2 min_distances[dist] = name # Return the closest color name return min_distances[min(min_distances.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>
使用例
<code class="python">color = (119, 172, 152) actual_name, closest_name = get_colour_name(color) print("Actual:", actual_name, ", Closest:", closest_name)</code>
出力
実際: なし、最も近い: cadetblue
以上がPythonでRGBカラーを英語のカラー名に変換する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。