LoginSignup
2
2

More than 3 years have passed since last update.

pythonで色の名前を入力するとrgbの数値を返す関数

Last updated at Posted at 2019-12-10

事の発端

img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

上記のコードのように、関数の引数などでrgbのカラーを指定する場合に、(0, 255, 0)のようなリテラルではなく"white"のように書きたいと思いました。
しかし、適当な書き方が見当たりませんでした。そのため、rgbの値を表すタブルを返す関数を自作したので、せっかくなので記事にしました。
(別のやり方を知っている人はコメントいただけるとありがたいです。アドバイスありがとうございました。)

サンプルコード

# rgbの数値を返す関数
def rgb(color):
    data = [["white", 255, 255, 255],
            ["black", 0, 0, 0],
            ["blue", 0, 0, 255],
            ["red", 255, 0, 0],
            ["grey", 190, 190, 190],
            ["LightGray", 211, 211, 211],
            ["green", 0, 255, 0],
            ["orange", 255, 165, 0],
            ["yellow", 255, 255, 0],
            ["pink", 255, 192, 203],
            ["snow", 255, 250, 250],
            ["cyan", 0, 255, 255],
            ["gold", 255, 215, 0],
            ["ivory", 255, 255, 240],
            ]
    for i in range(len(data)):
        if data[i][0].lower() == color.lower():
            return data[i][1], data[i][2], data[i][3]


def main():
    print(rgb("white"))
    print(rgb("black"))


if __name__ == "__main__":
    main()

実行結果

(255, 255, 255)
(0, 0, 0)

感想

私はこれで満足です。このrgb関数を使って、rgb("white")と書くことで、(255, 255, 255)と値が返ってきて最初に書いた関数の引数にうまく利用することができました。

追記)コメント欄もご覧ください。この場合、辞書の方が確かに良いですよね。

どんな色の名前があるのか

以下のページを見れば、tkinterで用意されている色を表す名前がわかります。
http://www.tcl.tk/man/tcl8.4/TkCmd/colors.htm

関連ページ

Tkinterで色々な背景の色を表示して比較したい
https://qiita.com/hatorijobs/items/55f8292b4674fc8f19dd

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2