-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfilter.py
More file actions
42 lines (36 loc) · 1.59 KB
/
filter.py
File metadata and controls
42 lines (36 loc) · 1.59 KB
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
from PIL import Image
import numpy as np
def refactor_pixels(pixels, i, j, step, pixel_size):
"""
изменение значение пикселей в для создания отдельном блоке моззайки в монохромного ч/б блока
:param pixels:
:param i:
:param j:
:param step:
:param pixel_size:
:return:
"""
middle_brightness = int(int(np.sum(pixels[i:i + pixel_size, j:j + pixel_size])) // 3 // (pixel_size ** 2))
pixels[i: i + pixel_size, j: j + pixel_size] = int(middle_brightness // step) * step
def pixelation(pixels, step, pixel_size):
"""
Нарезка массива значений пикселей на блоки моззаики и последующее их изменение
:param pixels:
:param step:
:param pixel_size:
:return:
>>>pixelation()
"""
width = len(pixels)
height = len(pixels[1])
pixels = pixels[:width // pixel_size * pixel_size, :height // pixel_size * pixel_size]
width = len(pixels)
height = len(pixels[1])
for i in range(0, width - pixel_size + 1, pixel_size):
for j in range(0, height - pixel_size + 1, pixel_size):
refactor_pixels(pixels, i, j, step, pixel_size)
return pixels
img = Image.open(input('Имя входной фотографии: '))
pixels = np.array(img)
res = Image.fromarray(pixelation(pixels, int(input("Глубина цвета: ")), int(input("Размер мозаики: "))))
res.save(input('Имя обработарнной фотографии: '))