Pythonのcolorsysモジュールを使ってRGBやYIQ、HLSの変換を行う方法

スポンサーリンク

今回は、Python colorsysモジュールについて詳しく解説します。


スポンサーリンク

colorsysモジュールとは?

Pythonは、データ値の機能をテストしたり、操作や表現を行うための様々なモジュールを提供してくれます。

その一つがPython colorsysモジュールです。

colorsysモジュールは、以下の色の値の双方向変換を行うのに役立ちます。

  1. (色相・明度・彩度)
  2. YIQ(輝度(Y)同相求積) 3.
  3. HSV (色相飽和値)
  4. 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)

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プログラミングに関連するこのような記事のために、私たちにご期待ください。


タイトルとURLをコピーしました