Skip to content

Commit 75590ed

Browse files
committed
test image stats of all image modes
1 parent 7097a9a commit 75590ed

File tree

1 file changed

+233
-9
lines changed

1 file changed

+233
-9
lines changed

Tests/test_imagestat.py

Lines changed: 233 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,241 @@ def test_sanity() -> None:
3131
ImageStat.Stat(1) # type: ignore[arg-type]
3232

3333

34-
def test_hopper() -> None:
35-
im = hopper()
34+
hopper_image_stats = {
35+
"1": {
36+
"extrema": [(0, 255)],
37+
"count": [16384],
38+
"sum": [1374450.0],
39+
"sum2": [350484750.0],
40+
"mean": [83.8897705078125],
41+
"median": [0],
42+
"rms": [146.25967140497818],
43+
"var": [14354.39788363874],
44+
"stddev": [119.80984051253361],
45+
},
46+
"L": {
47+
"extrema": [(1, 255)],
48+
"count": [16384],
49+
"sum": [1387784.0],
50+
"sum2": [189769246.0],
51+
"mean": [84.70361328125],
52+
"median": [87],
53+
"rms": [107.62246782644732],
54+
"var": [4407.893478155136],
55+
"stddev": [66.39196847627834],
56+
},
57+
"LA": {
58+
"extrema": [(1, 255), (1, 255)],
59+
"count": [16384, 16384],
60+
"sum": [1387784.0, 1387784.0],
61+
"sum2": [189769246.0, 189769246.0],
62+
"mean": [84.70361328125, 84.70361328125],
63+
"median": [87, 87],
64+
"rms": [107.62246782644732, 107.62246782644732],
65+
"var": [4407.893478155136, 4407.893478155136],
66+
"stddev": [66.39196847627834, 66.39196847627834],
67+
},
68+
"La": {
69+
"extrema": [(1, 255), (1, 255)],
70+
"count": [16384, 16384],
71+
"sum": [1387784.0, 1387784.0],
72+
"sum2": [189769246.0, 189769246.0],
73+
"mean": [84.70361328125, 84.70361328125],
74+
"median": [87, 87],
75+
"rms": [107.62246782644732, 107.62246782644732],
76+
"var": [4407.893478155136, 4407.893478155136],
77+
"stddev": [66.39196847627834, 66.39196847627834],
78+
},
79+
"P": {
80+
"extrema": [(0, 225)],
81+
"count": [16384],
82+
"sum": [1434006.0],
83+
"sum2": [191921024.0],
84+
"mean": [87.5247802734375],
85+
"median": [61],
86+
"rms": [108.2309091133397],
87+
"var": [4053.342525586486],
88+
"stddev": [63.665866251756015],
89+
},
90+
"PA": {
91+
"extrema": [(0, 225), (0, 225)],
92+
"count": [16384, 16384],
93+
"sum": [1434006.0, 1434006.0],
94+
"sum2": [191921024.0, 191921024.0],
95+
"mean": [87.5247802734375, 87.5247802734375],
96+
"median": [61, 61],
97+
"rms": [108.2309091133397, 108.2309091133397],
98+
"var": [4053.342525586486, 4053.342525586486],
99+
"stddev": [63.665866251756015, 63.665866251756015],
100+
},
101+
"F": {
102+
"extrema": [(0, 255)],
103+
"count": [16384],
104+
"sum": [1371401.0],
105+
"sum2": [187010571.0],
106+
"mean": [83.70367431640625],
107+
"median": [86],
108+
"rms": [106.8373503105853],
109+
"var": [4407.914327319711],
110+
"stddev": [66.39212549180597],
111+
},
112+
"I": {
113+
"extrema": [(0, 255)],
114+
"count": [16384],
115+
"sum": [1371401.0],
116+
"sum2": [187010571.0],
117+
"mean": [83.70367431640625],
118+
"median": [86],
119+
"rms": [106.8373503105853],
120+
"var": [4407.914327319711],
121+
"stddev": [66.39212549180597],
122+
},
123+
"I;16": {
124+
"extrema": [(0, 254)],
125+
"count": [16384],
126+
"sum": [588959.0],
127+
"sum2": [83694771.0],
128+
"mean": [35.94720458984375],
129+
"median": [2],
130+
"rms": [71.47253616105257],
131+
"var": [3816.121907468885],
132+
"stddev": [61.77476756305025],
133+
},
134+
"I;16B": {
135+
"extrema": [(0, 254)],
136+
"count": [16384],
137+
"sum": [588959.0],
138+
"sum2": [83694771.0],
139+
"mean": [35.94720458984375],
140+
"median": [2],
141+
"rms": [71.47253616105257],
142+
"var": [3816.121907468885],
143+
"stddev": [61.77476756305025],
144+
},
145+
"I;16L": {
146+
"extrema": [(0, 254)],
147+
"count": [16384],
148+
"sum": [588959.0],
149+
"sum2": [83694771.0],
150+
"mean": [35.94720458984375],
151+
"median": [2],
152+
"rms": [71.47253616105257],
153+
"var": [3816.121907468885],
154+
"stddev": [61.77476756305025],
155+
},
156+
"I;16N": {
157+
"extrema": [(0, 254)],
158+
"count": [16384],
159+
"sum": [588959.0],
160+
"sum2": [83694771.0],
161+
"mean": [35.94720458984375],
162+
"median": [2],
163+
"rms": [71.47253616105257],
164+
"var": [3816.121907468885],
165+
"stddev": [61.77476756305025],
166+
},
167+
"RGB": {
168+
"extrema": [(0, 255), (0, 255), (0, 255)],
169+
"count": [16384, 16384, 16384],
170+
"sum": [1470218.0, 1311896.0, 1563008.0],
171+
"sum2": [227989760.0, 176170192.0, 240873092.0],
172+
"mean": [89.7349853515625, 80.07177734375, 95.3984375],
173+
"median": [72, 73, 71],
174+
"rms": [117.96351395664678, 103.69462471754503, 121.25067755126412],
175+
"var": [5863.023028954864, 4341.085668325424, 5600.864929199219],
176+
"stddev": [76.57037957954017, 65.88691575969712, 74.83892656364881],
177+
},
178+
"RGBA": {
179+
"extrema": [(0, 255), (0, 255), (0, 255), (255, 255)],
180+
"count": [16384, 16384, 16384, 16384],
181+
"sum": [1470218.0, 1311896.0, 1563008.0, 4177920.0],
182+
"sum2": [227989760.0, 176170192.0, 240873092.0, 1065369600.0],
183+
"mean": [89.7349853515625, 80.07177734375, 95.3984375, 255.0],
184+
"median": [72, 73, 71, 255],
185+
"rms": [117.96351395664678, 103.69462471754503, 121.25067755126412, 255.0],
186+
"var": [5863.023028954864, 4341.085668325424, 5600.864929199219, 0.0],
187+
"stddev": [76.57037957954017, 65.88691575969712, 74.83892656364881, 0.0],
188+
},
189+
"RGBa": {
190+
"extrema": [(0, 255), (0, 255), (0, 255), (255, 255)],
191+
"count": [16384, 16384, 16384, 16384],
192+
"sum": [1470218.0, 1311896.0, 1563008.0, 4177920.0],
193+
"sum2": [227989760.0, 176170192.0, 240873092.0, 1065369600.0],
194+
"mean": [89.7349853515625, 80.07177734375, 95.3984375, 255.0],
195+
"median": [72, 73, 71, 255],
196+
"rms": [117.96351395664678, 103.69462471754503, 121.25067755126412, 255.0],
197+
"var": [5863.023028954864, 4341.085668325424, 5600.864929199219, 0.0],
198+
"stddev": [76.57037957954017, 65.88691575969712, 74.83892656364881, 0.0],
199+
},
200+
"RGBX": {
201+
"extrema": [(0, 255), (0, 255), (0, 255), (255, 255)],
202+
"count": [16384, 16384, 16384, 16384],
203+
"sum": [1470218.0, 1311896.0, 1563008.0, 4177920.0],
204+
"sum2": [227989760.0, 176170192.0, 240873092.0, 1065369600.0],
205+
"mean": [89.7349853515625, 80.07177734375, 95.3984375, 255.0],
206+
"median": [72, 73, 71, 255],
207+
"rms": [117.96351395664678, 103.69462471754503, 121.25067755126412, 255.0],
208+
"var": [5863.023028954864, 4341.085668325424, 5600.864929199219, 0.0],
209+
"stddev": [76.57037957954017, 65.88691575969712, 74.83892656364881, 0.0],
210+
},
211+
"CMYK": {
212+
"extrema": [(0, 255), (0, 255), (0, 255), (0, 0)],
213+
"count": [16384, 16384, 16384, 16384],
214+
"sum": [2707702.0, 2866024.0, 2614912.0, 0.0],
215+
"sum2": [543548180.0, 572472832.0, 509108612.0, 0.0],
216+
"mean": [165.2650146484375, 174.92822265625, 159.6015625, 0.0],
217+
"median": [183, 182, 184, 0],
218+
"rms": [182.1415605942343, 186.9250351076602, 176.2768381882334, 0.0],
219+
"var": [5863.023028954864, 4341.085668325424, 5600.864929199219, 0.0],
220+
"stddev": [76.57037957954017, 65.88691575969712, 74.83892656364881, 0.0],
221+
},
222+
"HSV": {
223+
"extrema": [(0, 254), (0, 255), (1, 255)],
224+
"count": [16384, 16384, 16384],
225+
"sum": [2129583.0, 1958662.0, 1966497.0],
226+
"sum2": [372384587.0, 283361102.0, 347501397.0],
227+
"mean": [129.97943115234375, 119.5472412109375, 120.02545166015625],
228+
"median": [155, 121, 132],
229+
"rms": [150.7599132814712, 131.51041455239272, 145.6358543181873],
230+
"var": [5833.89892994985, 3003.446254596114, 6803.6930167637765],
231+
"stddev": [76.37996419186022, 54.80370657716606, 82.48450167615597],
232+
},
233+
"LAB": {
234+
"extrema": [(1, 255), (112, 202), (67, 199)],
235+
"count": [16384, 16384, 16384],
236+
"sum": [1450343.0, 2241211.0, 1994635.0],
237+
"sum2": [211197929.0, 308840591.0, 252898203.0],
238+
"mean": [88.52191162109375, 136.79266357421875, 121.74285888671875],
239+
"median": [98, 132, 125],
240+
"rms": [113.53633161323914, 137.29578918534736, 124.24041747937432],
241+
"var": [5054.3697591386735, 137.9009202979505, 614.3576455377042],
242+
"stddev": [71.09409088763056, 11.743122255088316, 24.786239035757408],
243+
},
244+
"YCbCr": {
245+
"extrema": [(0, 255), (46, 189), (85, 230)],
246+
"count": [16384, 16384, 16384],
247+
"sum": [1379771.0, 2189635.0, 2148579.0],
248+
"sum2": [188439995.0, 301607477.0, 289799029.0],
249+
"mean": [84.21453857421875, 133.64471435546875, 131.13885498046875],
250+
"median": [87, 130, 128],
251+
"rms": [107.2448811765588, 135.67851519258045, 132.99597368384232],
252+
"var": [4409.376031305641, 547.7498097084463, 490.5297305248678],
253+
"stddev": [66.40313269195694, 23.404055411582974, 22.14790578192141],
254+
},
255+
}
36256

37-
st = ImageStat.Stat(im)
38257

39-
# verify a few values
40-
assert st.extrema[0] == (0, 255)
41-
assert st.median[0] == 72
42-
assert st.sum[0] == 1470218
43-
assert st.sum[1] == 1311896
44-
assert st.sum[2] == 1563008
258+
def test_hopper_modes() -> None:
259+
"""Check that we're testing image stats for all of the image modes."""
260+
assert sorted(Image.MODES) == sorted(hopper_image_stats.keys())
261+
262+
263+
@pytest.mark.parametrize("mode", hopper_image_stats.keys())
264+
@pytest.mark.parametrize("stat", hopper_image_stats["RGB"].keys())
265+
def test_hopper(mode: str, stat: str) -> None:
266+
im = hopper(mode)
267+
st = ImageStat.Stat(im)
268+
assert getattr(st, stat) == hopper_image_stats[mode][stat]
45269

46270

47271
def test_constant() -> None:

0 commit comments

Comments
 (0)