pil rgb2hsv rgb2hls rgb2yuv

最近在参加一个招商图像的比赛,就准备用python做,这里记录下中间遇到的一些坑。软件安装配置的坑就不写了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
def rgb2hsv(img):
if isinstance(img, Image.Image):
r, g, b = img.split()
Hdat = []
Sdat = []
Vdat = []
for rd, gn, bl in zip(r.getdata(), g.getdata(), b.getdata()):
h, s, v = colorsys.rgb_to_hsv(rd / 255., gn / 255., bl / 255.)
# h, s, v = colorsys.rgb_to_yiq(rd / 255., gn / 255., bl / 255.)
# h, s, v = colorsys.rgb_to_hls(rd / 255., gn / 255., bl / 255.)
Hdat.append(int(h * 255.))
Sdat.append(int(s * 255.))
Vdat.append(int(v * 255.))
r.putdata(Hdat)
g.putdata(Sdat)
b.putdata(Vdat)
# return Image.merge('RGB', (r, g, b))
return r, g, b
else:
return None
def rgb2hls(img):
if isinstance(img, Image.Image):
r, g, b = img.split()
Hdat = []
Sdat = []
Vdat = []
for rd, gn, bl in zip(r.getdata(), g.getdata(), b.getdata()):
h, l, s = colorsys.rgb_to_hls(rd / 255., gn / 255., bl / 255.)
# h, s, v = colorsys.rgb_to_yiq(rd / 255., gn / 255., bl / 255.)
# h, s, v = colorsys.rgb_to_hls(rd / 255., gn / 255., bl / 255.)
Hdat.append(int(h * 255.))
Sdat.append(int(l * 255.))
Vdat.append(int(s * 255.))
r.putdata(Hdat)
g.putdata(Sdat)
b.putdata(Vdat)
# return Image.merge('RGB', (r, g, b))
return r, g, b
else:
return None
def rgb2yuv(img):
if isinstance(img, Image.Image):
r, g, b = img.split()
Ydat = []
Udat = []
Vdat = []
for rd, gn, bl in zip(r.getdata(), g.getdata(), b.getdata()):
y = 0.3 * rd + 0.59 * gn + 0.11 * bl
u = -0.15 * rd + -0.29 * gn + 0.44 * bl
v = 0.51 * rd + 0.52 * gn + -0.095 * bl
Ydat.append(int(y))
Udat.append(int(u))
Vdat.append(int(v))
r.putdata(Ydat)
g.putdata(Udat)
b.putdata(Vdat)
return r, g, b
else:
return None