事の発端
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