colorsys module in Python
The ‘colorsys’ module in Python used for the inter-conversion of color values between RGB(Red, Green and Blue) into three other types namely:
- YIQ ( Luminance In-phase( Quadrature)
- HLS (Hue Lightness Saturation)
- HSV (Hue Saturation Value)
There are six predefined functions in this module namely:
- rgb_to_yiq(r,g,b) : It takes 3 parameters i.e (r,g,b) and converts into YIQ format.
- rgb_to_hls(r,g,b): It takes 3 parameters i.e (r,g,b) and converts into HLS format.
- rgb_to_hsv(r,g,b): Takes 3 parameters i.e (r,g,b) and converts into HSV format.
- yiq_to_rgb(y,i,q): It takes 3 parameters i.e (y,i,q) and converts into RGB format.
- hls_to_rgb(h,l,s): It takes 3 parameters i.e (h,l,s) and converts into RGB format.
- hsv_to_rgb(h,s,v): It takes 3 parameters i.e (h,s,v) and converts into RGB format.
Constraints:
All the parameters have floating point values between 0 to 1 except in yiq_to_rgb function. Here y is positive while parameters i and q can also have negative floating point values.
Code to demonstrate the working of each function
Now let us take a look at a sample code. The code is a menu-driven program to let user use each of the options available.
import colorsys as c
def func1():
r=float(input("Enter r: "))
g=float(input("Enter g: "))
b=float(input("Enter b: "))
yiq=c.rgb_to_yiq(r,g,b)
print(yiq)
def func2():
r=float(input("Enter r: "))
g=float(input("Enter g: "))
b=float(input("Enter b: "))
hls=c.rgb_to_hls(r,g,b)
print(hls)
def func3():
r=float(input("Enter r: "))
g=float(input("Enter g: "))
b=float(input("Enter b: "))
hsv=c.rgb_to_hsv(r,g,b)
print(hsv)
def func4():
y=float(input("Enter y: "))
i=float(input("Enter i: "))
q=float(input("Enter q: "))
rgb=c.yiq_to_rgb(y,i,q)
print(rgb)
def func5():
h=float(input("Enter h: "))
l=float(input("Enter l: "))
s=float(input("Enter s: "))
rgb=c.hls_to_rgb(h,l,s)
print(rgb)
def func6():
h=float(input("Enter h: "))
s=float(input("Enter s: "))
v=float(input("Enter v: "))
rgb=c.hsv_to_rgb(h,s,v)
print(rgb)
def driver():
choice ='y'
if(choice=='y'):
print("1. RGB TO YIQ")
print("2. RGB TO HLS")
print("3. RGB TO HSV")
print("4. YIQ TO RGB")
print("5. HLS TO RGB")
print("6. HSV TO RGB")
ch=int(input("Enter your choice: "))
if(ch==1):
func1()
elif(ch==2):
func2()
elif(ch==3):
func3()
elif(ch==4):
func4()
elif(ch==5):
func5()
elif(ch==6):
func6()
else:
print("invalid choice!")
option=input("Do you want to continue?(y/n): ")
choice=option
if(choice=='y'):
driver()
driver()
Output:
1. RGB TO YIQ 2. RGB TO HLS 3. RGB TO HSV 4. YIQ TO RGB 5. HLS TO RGB 6. HSV TO RGB Enter your choice: 1 Enter r: 0.2 Enter g: 0.4 Enter b: 0.2 (0.318, -0.055459999999999995, -0.10501999999999999) Do you want to continue?(y/n): y 1. RGB TO YIQ 2. RGB TO HLS 3. RGB TO HSV 4. YIQ TO RGB 5. HLS TO RGB 6. HSV TO RGB Enter your choice: 2 Enter r: 0.3 Enter g: 0.1 Enter b: 0.2 (0.9166666666666666, 0.2, 0.49999999999999994) Do you want to continue?(y/n): y 1. RGB TO YIQ 2. RGB TO HLS 3. RGB TO HSV 4. YIQ TO RGB 5. HLS TO RGB 6. HSV TO RGB Enter your choice: 3 Enter r: 0.4 Enter g: 0.5 Enter b: 0.1 (0.20833333333333334, 0.8, 0.5) Do you want to continue?(y/n): y 1. RGB TO YIQ 2. RGB TO HLS 3. RGB TO HSV 4. YIQ TO RGB 5. HLS TO RGB 6. HSV TO RGB Enter your choice: 4 Enter y: 0.4 Enter i: -0.2 Enter q: -0.3 (0.023556581986143188, 0.6456648530160097, 0.10900692840646653) Do you want to continue?(y/n): y 1. RGB TO YIQ 2. RGB TO HLS 3. RGB TO HSV 4. YIQ TO RGB 5. HLS TO RGB 6. HSV TO RGB Enter your choice: 5 Enter h: 0.6 Enter l: 0.2 Enter s: 0.4 (0.12000000000000005, 0.184, 0.27999999999999997) Do you want to continue?(y/n): y 1. RGB TO YIQ 2. RGB TO HLS 3. RGB TO HSV 4. YIQ TO RGB 5. HLS TO RGB 6. HSV TO RGB Enter your choice: 6 Enter h: 0.4 Enter s: 0.7 Enter v: 0.8 (0.24000000000000005, 0.8, 0.46400000000000025) Do you want to continue?(y/n): n >>>
Leave a Reply