From 78388b4a1c1eeeb87c48e2b687cd6aa93ab16806 Mon Sep 17 00:00:00 2001 From: Lingvistick <73380616+Lingvistick@users.noreply.github.com> Date: Sun, 14 Nov 2021 19:28:28 +0500 Subject: [PATCH 1/4] =?UTF-8?q?=D0=A8=D0=B0=D0=B3=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/filter.py b/filter.py index 4150df2..756e08c 100644 --- a/filter.py +++ b/filter.py @@ -5,23 +5,23 @@ a = len(arr) a1 = len(arr[1]) i = 0 -while i < a - 11: +while i < a: j = 0 - while j < a1 - 11: + while j < a1: 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 + for m in range(j, j + 10): + n1 = arr[n][m][0] + n2 = arr[n][m][1] + n3 = arr[n][m][2] + M = int(n1) + int(n2) + int(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 + for m in range(j, j + 10): + arr[n][m][0] = int(s // 50) * 50 / 3 + arr[n][m][1] = int(s // 50) * 50 / 3 + arr[n][m][2] = int(s // 50) * 50 / 3 j = j + 10 i = i + 10 res = Image.fromarray(arr) From 2f789fbfbdbea00ba65c5d83d2caf0306509711e Mon Sep 17 00:00:00 2001 From: Lingvistick <73380616+Lingvistick@users.noreply.github.com> Date: Sun, 14 Nov 2021 19:35:45 +0500 Subject: [PATCH 2/4] =?UTF-8?q?=D0=A8=D0=B0=D0=B3=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 64 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/filter.py b/filter.py index 756e08c..fd64cc6 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,40 @@ 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: - j = 0 - while j < a1: - s = 0 - for n in range(i, i + 10): - for m in range(j, j + 10): - n1 = arr[n][m][0] - n2 = arr[n][m][1] - n3 = arr[n][m][2] - M = int(n1) + int(n2) + int(n3) - s += M - s = int(s // 100) - for n in range(i, i + 10): - for m in range(j, j + 10): - arr[n][m][0] = int(s // 50) * 50 / 3 - arr[n][m][1] = int(s // 50) * 50 / 3 - arr[n][m][2] = int(s // 50) * 50 / 3 - j = j + 10 - i = i + 10 -res = Image.fromarray(arr) -res.save('res.jpg') +class ConvertImage: + + def __init__(self, image, size, step): + self.image = image + self.size = size + self.step = 255 // step + + def convert_image(self): + height = len(self.image) + width = len(self.image[1]) + for i in range(0, height, self.size): + for j in range(0, width, self.size): + medium_brightness = self.get_medium_brightness(i, j) + self.set_grayscale(medium_brightness, i, j) + return Image.fromarray(self.image) + + def set_grayscale(self, medium_brightness, i, j): + for x in range(i, i + self.size): + for y in range(j, j + self.size): + self.image[x][y][0] = int(medium_brightness // self.step) * self.step / 3 + self.image[x][y][1] = int(medium_brightness // self.step) * self.step / 3 + self.image[x][y][2] = int(medium_brightness // self.step) * self.step / 3 + + def get_medium_brightness(self, i, j): + medium_brightness = 0 + for x in range(i, i + self.size): + for y in range(j, j + self.size): + pixel = self.image[x][y] + pixel_sum = pixel.sum() + medium_brightness += pixel_sum + medium_brightness = int(medium_brightness // self.size ** 2) + return medium_brightness + + +original_image = Image.open("img2.jpg") +pixels = np.array(original_image) +result = ConvertImage(pixels, 10, 50).convert_image() +result.save('res.jpg') From a6d71eed6ca31d51223415eefbce38feb51c4f3f Mon Sep 17 00:00:00 2001 From: Lingvistick <73380616+Lingvistick@users.noreply.github.com> Date: Sun, 14 Nov 2021 19:36:36 +0500 Subject: [PATCH 3/4] =?UTF-8?q?=D0=A8=D0=B0=D0=B3=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/filter.py b/filter.py index fd64cc6..537881e 100644 --- a/filter.py +++ b/filter.py @@ -1,12 +1,10 @@ from PIL import Image import numpy as np class ConvertImage: - def __init__(self, image, size, step): self.image = image self.size = size self.step = 255 // step - def convert_image(self): height = len(self.image) width = len(self.image[1]) @@ -17,21 +15,10 @@ def convert_image(self): return Image.fromarray(self.image) def set_grayscale(self, medium_brightness, i, j): - for x in range(i, i + self.size): - for y in range(j, j + self.size): - self.image[x][y][0] = int(medium_brightness // self.step) * self.step / 3 - self.image[x][y][1] = int(medium_brightness // self.step) * self.step / 3 - self.image[x][y][2] = int(medium_brightness // self.step) * self.step / 3 + self.image[i:i + self.size, j:j + self.size] = int(medium_brightness // self.step) * self.step / 3 def get_medium_brightness(self, i, j): - medium_brightness = 0 - for x in range(i, i + self.size): - for y in range(j, j + self.size): - pixel = self.image[x][y] - pixel_sum = pixel.sum() - medium_brightness += pixel_sum - medium_brightness = int(medium_brightness // self.size ** 2) - return medium_brightness + return int((self.image[i:i + self.size, j:j + self.size].sum()) // self.size ** 2) original_image = Image.open("img2.jpg") From 0689805f85e305db91d6c891630e38fb1e9a460d Mon Sep 17 00:00:00 2001 From: Lingvistick <73380616+Lingvistick@users.noreply.github.com> Date: Sun, 14 Nov 2021 19:37:14 +0500 Subject: [PATCH 4/4] =?UTF-8?q?=D0=A8=D0=B0=D0=B3=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/filter.py b/filter.py index 537881e..db39cea 100644 --- a/filter.py +++ b/filter.py @@ -1,10 +1,12 @@ from PIL import Image import numpy as np + class ConvertImage: - def __init__(self, image, size, step): + def __init__(self, image, size, gradation): self.image = image self.size = size - self.step = 255 // step + self.step = 255 // gradation + def convert_image(self): height = len(self.image) width = len(self.image[1]) @@ -13,15 +15,11 @@ def convert_image(self): medium_brightness = self.get_medium_brightness(i, j) self.set_grayscale(medium_brightness, i, j) return Image.fromarray(self.image) - def set_grayscale(self, medium_brightness, i, j): self.image[i:i + self.size, j:j + self.size] = int(medium_brightness // self.step) * self.step / 3 - def get_medium_brightness(self, i, j): return int((self.image[i:i + self.size, j:j + self.size].sum()) // self.size ** 2) - - -original_image = Image.open("img2.jpg") + original_image = Image.open(input("Введите имя исходного изображения:")) pixels = np.array(original_image) -result = ConvertImage(pixels, 10, 50).convert_image() -result.save('res.jpg') +result = ConvertImage(pixels, size=10, gradation=50).convert_image() +result.save((input("Введите имя изображения, в которое запишется результат:")))