Files @ 630c42e6d376
Branch filter:

Location: OneEye/exp/colors.py - annotation

Laman
requirements.txt
import sys

# oops, actually we could use import colorsys


def hex2int(s):
	return int(str(s),base=16)

def int2RGB(x):
	r=(x>>16)&255
	g=(x>>8)&255
	b=x&255
	return r/255, g/255, b/255

def _RGB2HC(r,g,b):
	M=max(r,g,b)
	m=min(r,g,b)
	C=M-m

	if C==0: H_=0
	elif M==r: H_=(g-b)/C % 6
	elif M==g: H_=(b-r)/C + 2
	elif M==b: H_=(r-g)/C + 4
	H=60*H_

	return H,C

def RGB2HSV(r,g,b):
	H,C=_RGB2HC(r,g,b)
	V=max(r,g,b)
	S=C/V if V!=0 else 0

	return H,S,V

def RGB2HSL(r,g,b):
	H,C=_RGB2HC(r,g,b)
	L=(max(r,g,b)+min(r,g,b))/2
	S=C/(1-abs(2*L-1)) if L!=1 else 0

	return H,S,L

def RGB2HSI(r,g,b):
	H,C=_RGB2HC(r,g,b)
	I=(r+g+b)/3
	S=1-min(r,g,b)/I

	return H,S,I


if not len(sys.argv)>1:
	sys.exit("no data file provided")
f=open(sys.argv[1])

data=[line.split() for line in f]
f.close()

print("img\tstate\thex\tR\tG\tB\tH\tSl\tL\tSv\tV\tSi\tI")
for rec in data:
	color=hex2int(rec[2])
	R,G,B=int2RGB(color)
	H,Sl,L=RGB2HSL(R,G,B)
	H,Sv,V=RGB2HSV(R,G,B)
	H,Si,I=RGB2HSI(R,G,B)

	args=[R,G,B,H,Sl,L,Sv,V,Si,I]
	args=map(lambda x: round(x,3), args)
	print(rec[0],rec[1],rec[2],*args,sep="\t")