今回は、Python colorsysモジュールについて詳しく解説します。
colorsysモジュールとは?
Pythonは、データ値の機能をテストしたり、操作や表現を行うための様々なモジュールを提供してくれます。
その一つがPython colorsysモジュールです。
colorsysモジュールは、以下の色の値の双方向変換を行うのに役立ちます。
- (色相・明度・彩度)
- YIQ(輝度(Y)同相求積) 3.
- HSV (色相飽和値)
- RGB(赤,緑,青)
これらすべての色の座標表現は浮動小数点値です。
変換値の許容範囲は,それぞれ通常0~1です。
colorsys モジュールの使い方は?
では、次節でその相互変換を見てみましょう。
1. RGB to YIQ inter-conversion
colorsysモジュールは、RGBからLuminance (Y) In-phase Quadratureカラーレンジへの変換を開始するrgb_to_yiq() メソッドを提供しています。
そのためには、以下のように3つの色値をパラメータとして関数に渡す必要があります。
- 赤
- 緑
- 青
次の構文を見てください。
構文は以下の様な感じです。
colorsys.rgb_to_yiq(Red, Green, Blue) |
例1: RGB->YIQ
以下の例では、Red, Green, Blueの3つの色値をrgb_to_yiq()関数に渡し、RGBからYIQカラースケールに変換しています。
import colorsys
R = 0.1
G = 0.3
B = 0.3
YIQ = colorsys.rgb_to_yiq(R, G, B)
print (YIQ)
|
結果は、以下の通りです。
出力:
( 0.24 , - 0.11979999999999999 , - 0.0426 )
|
Python colorsysモジュールには、Luminance (Y) In-phase Quadratureの色値をRGBモードに変換するyiq_to_rgb()関数が含まれています。
構文は以下の通りです。
yiq_to_rgb(Y, I, Q) |
例2: YIQ->RGB
YIQカラースケールの値をRed-Green-Blueカラースケールに変換することを実行しました。
import colorsys
Y = 0.1
I = 0.3
Q = 0.3
RGB = colorsys.yiq_to_rgb(Y, I, Q)
print (RGB)
|
結果は以下の通りです。
( 0.5711316397228637 , 0.0 , 0.28013856812933025 )
|
この記事もチェック:Pythonのxmltodictモジュールを使ってXMLをdictに変換する方法
2. HSVからRGBへの相互変換
YIQやRGBとは別に、colorsysモジュールではHSVスケールデータをRGBスケールに変換するhsv_to_rgb(H,S,V)という関数が用意されています。
構文は以下の通りです。
hsv_to_rgb(H,S,V) |
例1: HSV->RGB
import colorsys
H = 0.1
S = 0.3
V = 0.3
RGB = colorsys.hsv_to_rgb(H, S, V)
print (RGB)
|
結果は以下の通りです。
( 0.3 , 0.264 , 0.21 )
|
また、RGBスケールからHSVカラーバリューへの変換を行うrgb_to_hsv(R,G,B)関数も用意されており、RGBスケールからHSVカラーバリューへの変換を行うことができます。
例2: HSV->RGB
rgb_to___hsv() 関数を使用して、RGBスケールからHSVカラースケールへの変換を実行しました。
import colorsys
R = 0.1
G = 0.3
B = 0.3
HSV = colorsys.rgb_to_hsv(R, G, B)
print (HSV)
|
を出力します。
( 0.5 , 0.6666666666666666 , 0.3 )
|
3. RGBからHLSへの相互変換
Python colorsys モジュールでは、rgb_to_hls() 関数を用いて RGB カラースケールから HLS カラースケールへの変換を簡単に行うことができます。
構文は以下の通りです。
rgb_to_hls(R, G, B) |
例えば、以下の様になります。
この例では、RGBカラースケールの値をHLS形式に変換しています。
import colorsys
R = 0.1
G = 0.3
B = 0.3
HLS = colorsys.rgb_to_hls(R, G, B)
print (HLS)
|
を出力します。
以下のように、そして上記の例でも、変換範囲は通常0から1までのスケールに留まります。
( 0.5 , 0.2 , 0.49999999999999994 )
|
まとめ
何か疑問があれば、お気軽にコメントください。
Pythonプログラミングに関連するこのような記事のために、私たちにご期待ください。