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