diff --git a/filter.py b/filter.py index 4150df2..128bc86 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,30 @@ from PIL import Image import numpy as np -img = Image.open("img2.jpg") -arr = np.array(img) -a = len(arr) -a1 = len(arr[1]) -i = 0 -while i < a - 11: - j = 0 - while j < a1 - 11: - s = 0 - for n in range(i, i + 10): - for n1 in range(j, j + 10): - n1 = arr[n][n1][0] - n2 = arr[n][n1][1] - n3 = arr[n][n1][2] - M = n1 + n2 + n3 - s += M - s = int(s // 100) - for n in range(i, i + 10): - for n1 in range(j, j + 10): - arr[n][n1][0] = int(s // 50) * 50 - arr[n][n1][1] = int(s // 50) * 50 - arr[n][n1][2] = int(s // 50) * 50 - j = j + 10 - i = i + 10 -res = Image.fromarray(arr) -res.save('res.jpg') + + +def find_brightness(i, j, arr, m_h, m_w): + count = np.sum(arr[i: i + m_h, j: j + m_w]) / 3 + count = count // (m_h * m_w) + return count + + +def make_mosaic(arr, m_h, m_w, grad): + height = len(arr) + width = len(arr[1]) + i = 0 + while i < height: + j = 0 + while j < width: + brightness = find_brightness(i, j, arr, m_h, m_w) + arr[i: i + m_h, j: j + m_w, :] = int(brightness // grad) * grad + j = j + m_w + i = i + m_h + + +images = input('Введите имя исходного файла и нового(через запятую): ').split(',') +arr_img = np.array(Image.open(images[0] + ".jpg")) +size_h, size_w = input('Введите размер мозаики(через запятую): ').split(',') +num_grad = int(input('Введите число градации: ')) +make_mosaic(arr_img, int(size_h), int(size_w), num_grad) +res = Image.fromarray(arr_img) +res.save(images[1] + ".jpg") diff --git a/res.jpg b/res.jpg index d8d97ff..9d1690c 100644 Binary files a/res.jpg and b/res.jpg differ