From ab0740a0ab083a473239c0a2eb1485ebceef082f Mon Sep 17 00:00:00 2001 From: VeselayaK <94229216+VeselayaK@users.noreply.github.com> Date: Tue, 16 Nov 2021 16:50:13 +0500 Subject: [PATCH 1/4] =?UTF-8?q?=D1=8D=D1=82=D0=B0=D0=BF=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/filter.py b/filter.py index 4150df2..aff4e04 100644 --- a/filter.py +++ b/filter.py @@ -2,27 +2,25 @@ 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 +width = len(arr) +height = len(arr[1]) +cell_size = 10; +step = 50; +for i in range(0, width - cell_size + 1, cell_size): + for j in range(0, height - cell_size + 1, cell_size): + avg_brightness = 0 + for row in range(i, i + cell_size): + for column in range(j, j + cell_size): + r = arr[row][column][0] + g = arr[row][column][1] + b = arr[row][column][2] + sum = int(r) + int(g) + int(b) + avg_brightness += sum + avg_brightness = int(avg_brightness // 3 // (cell_size ** 2)) + for row in range(i, i + cell_size): + for column in range(j, j + cell_size): + arr[row][column][0] = int(avg_brightness // step) * step + arr[row][column][1] = int(avg_brightness // step) * step + arr[row][column][2] = int(avg_brightness // step) * step res = Image.fromarray(arr) -res.save('res.jpg') +res.save('res.jpg') \ No newline at end of file From 50ec1f0c6f2a55ac91371799147311e48deba00f Mon Sep 17 00:00:00 2001 From: VeselayaK <94229216+VeselayaK@users.noreply.github.com> Date: Tue, 16 Nov 2021 16:51:36 +0500 Subject: [PATCH 2/4] =?UTF-8?q?=D1=8D=D1=82=D0=B0=D0=BF=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 58 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/filter.py b/filter.py index aff4e04..f59b3e7 100644 --- a/filter.py +++ b/filter.py @@ -1,26 +1,40 @@ from PIL import Image import numpy as np +def set_color(arr, i, j, cell_size, brightness, graduation): + for row in range(i, i + cell_size): + for column in range(j, j + cell_size): + value = int(brightness // graduation) * graduation + arr[row][column][0] = value + arr[row][column][1] = value + arr[row][column][2] = value + return arr + + +def get_avg_brightness(arr, i, j, cell_size): + result = 0 + for row in range(i, i + cell_size): + for column in range(j, j + cell_size): + r = arr[row][column][0] + g = arr[row][column][1] + b = arr[row][column][2] + sum = int(r) + int(g) + int(b) + result += sum + result = int(result // 3 // (cell_size ** 2)) + return result + + +def filter(arr, cell_size, graduation): + width = len(arr) + height = len(arr[1]) + for i in range(0, width - cell_size + 1, cell_size): + for j in range(0, height - cell_size + 1, cell_size): + brightness = get_avg_brightness(arr, i, j, cell_size) + arr = set_color(arr, i, j, cell_size, brightness, graduation) + return arr + + img = Image.open("img2.jpg") -arr = np.array(img) -width = len(arr) -height = len(arr[1]) -cell_size = 10; -step = 50; -for i in range(0, width - cell_size + 1, cell_size): - for j in range(0, height - cell_size + 1, cell_size): - avg_brightness = 0 - for row in range(i, i + cell_size): - for column in range(j, j + cell_size): - r = arr[row][column][0] - g = arr[row][column][1] - b = arr[row][column][2] - sum = int(r) + int(g) + int(b) - avg_brightness += sum - avg_brightness = int(avg_brightness // 3 // (cell_size ** 2)) - for row in range(i, i + cell_size): - for column in range(j, j + cell_size): - arr[row][column][0] = int(avg_brightness // step) * step - arr[row][column][1] = int(avg_brightness // step) * step - arr[row][column][2] = int(avg_brightness // step) * step -res = Image.fromarray(arr) +array = np.array(img) +array = filter(array, 10, 50) +res = Image.fromarray(array) res.save('res.jpg') \ No newline at end of file From da03e9bddba1bd2054e804d35eb9116000aa88f3 Mon Sep 17 00:00:00 2001 From: VeselayaK <94229216+VeselayaK@users.noreply.github.com> Date: Tue, 16 Nov 2021 16:52:25 +0500 Subject: [PATCH 3/4] =?UTF-8?q?=D1=8D=D1=82=D0=B0=D0=BF=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/filter.py b/filter.py index f59b3e7..b6ed9f4 100644 --- a/filter.py +++ b/filter.py @@ -1,25 +1,17 @@ from PIL import Image import numpy as np + + def set_color(arr, i, j, cell_size, brightness, graduation): - for row in range(i, i + cell_size): - for column in range(j, j + cell_size): - value = int(brightness // graduation) * graduation - arr[row][column][0] = value - arr[row][column][1] = value - arr[row][column][2] = value + value = int(brightness // graduation) * graduation + arr[i: i + cell_size, j: j + cell_size] = value return arr def get_avg_brightness(arr, i, j, cell_size): - result = 0 - for row in range(i, i + cell_size): - for column in range(j, j + cell_size): - r = arr[row][column][0] - g = arr[row][column][1] - b = arr[row][column][2] - sum = int(r) + int(g) + int(b) - result += sum - result = int(result // 3 // (cell_size ** 2)) + interval = arr[i: i + cell_size, j: j + cell_size] + summa = np.sum(interval) + result = int(summa // 3 // (cell_size ** 2)) return result From e6e2ae10807512390e809eec8ccfdb6594283a16 Mon Sep 17 00:00:00 2001 From: VeselayaK <94229216+VeselayaK@users.noreply.github.com> Date: Tue, 16 Nov 2021 16:52:52 +0500 Subject: [PATCH 4/4] =?UTF-8?q?=D1=8D=D1=82=D0=B0=D0=BF=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/filter.py b/filter.py index b6ed9f4..88085d3 100644 --- a/filter.py +++ b/filter.py @@ -9,6 +9,7 @@ def set_color(arr, i, j, cell_size, brightness, graduation): def get_avg_brightness(arr, i, j, cell_size): + result = 0 interval = arr[i: i + cell_size, j: j + cell_size] summa = np.sum(interval) result = int(summa // 3 // (cell_size ** 2)) @@ -25,8 +26,13 @@ def filter(arr, cell_size, graduation): return arr -img = Image.open("img2.jpg") +img_name = input("Введите название изображения: ") + ".jpg" +cell_size_data = int(input("Введите размер мозаики: ")) +graduation_data = int(input("Введите градацию: ")) +output = input("Введите название выходной картинки: ") + ".jpg" + +img = Image.open(img_name) array = np.array(img) -array = filter(array, 10, 50) +array = filter(array, cell_size_data, graduation_data) res = Image.fromarray(array) -res.save('res.jpg') \ No newline at end of file +res.save(output) \ No newline at end of file