From 46568dd7e03c95eb9aace5406f21c367d2c9476b Mon Sep 17 00:00:00 2001 From: maksaevalisa Date: Sat, 20 Nov 2021 13:33:17 +0500 Subject: [PATCH 1/5] First step --- filter.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/filter.py b/filter.py index 4150df2..1919253 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,33 @@ 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: +while i < a - 1: j = 0 - while j < a1 - 11: + while j < a1 - 1: 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 + n1 = int(arr[n][n1][0]) + n2 = int(arr[n][n1][1]) + n3 = int(arr[n][n1][2]) + s += n1 + n2 + n3 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 + arr[n][n1][0] = int(s//3) + arr[n][n1][1] = int(s//3) + arr[n][n1][2] = int(s//3) j = j + 10 i = i + 10 + res = Image.fromarray(arr) -res.save('res.jpg') +res.show() +res.save('res.jpg') \ No newline at end of file From a8c4af3b953f7d4abff0f5e4bd8f138c3c62a45c Mon Sep 17 00:00:00 2001 From: maksaevalisa Date: Sat, 20 Nov 2021 13:55:18 +0500 Subject: [PATCH 2/5] Second step --- filter.py | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/filter.py b/filter.py index 1919253..2b21a90 100644 --- a/filter.py +++ b/filter.py @@ -4,29 +4,39 @@ img = Image.open("img2.jpg") arr = np.array(img) -a = len(arr) -a1 = len(arr[1]) +length = len(arr) +length_first = len(arr[1]) +size = int(input("Введите размер мозайки >> ")) +gray = int(input("Введите режим градации серого >> ")) i = 0 -while i < a - 1: + +def sumColor(): + global n, n1, sum_color + for n in range(i, i + size): + for n1 in range(j, j + size): + r = int(arr[n][n1][0]) + g = int(arr[n][n1][1]) + b = int(arr[n][n1][2]) + sum_color += r + g + b + sum_color = int(sum_color // 100) + +def grayColor (): + global n, n1 + for n in range(i, i + size): + for n1 in range(j, j + size): + arr[n][n1][0] = int(sum_color // 50) * 50 // gray + arr[n][n1][1] = int(sum_color // 50) * 50 // gray + arr[n][n1][2] = int(sum_color // 50) * 50 // gray + +while i < length - 1: j = 0 - while j < a1 - 1: - s = 0 - for n in range(i, i + 10): - for n1 in range(j, j + 10): - n1 = int(arr[n][n1][0]) - n2 = int(arr[n][n1][1]) - n3 = int(arr[n][n1][2]) - s += n1 + n2 + n3 - s = int(s // 100) - - for n in range(i, i + 10): - for n1 in range(j, j + 10): - arr[n][n1][0] = int(s//3) - arr[n][n1][1] = int(s//3) - arr[n][n1][2] = int(s//3) - j = j + 10 - i = i + 10 + while j < length_first - 1: + sum_color = 0 + sumColor() + grayColor() + j = j + size + i = i + size res = Image.fromarray(arr) res.show() From 978b31550dacd361e8fb056c3a76edf901c94855 Mon Sep 17 00:00:00 2001 From: maksaevalisa Date: Sat, 20 Nov 2021 14:05:44 +0500 Subject: [PATCH 3/5] Third step --- filter.py | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/filter.py b/filter.py index 2b21a90..a282f3b 100644 --- a/filter.py +++ b/filter.py @@ -5,7 +5,6 @@ arr = np.array(img) length = len(arr) -length_first = len(arr[1]) size = int(input("Введите размер мозайки >> ")) gray = int(input("Введите режим градации серого >> ")) @@ -14,24 +13,17 @@ def sumColor(): global n, n1, sum_color for n in range(i, i + size): - for n1 in range(j, j + size): - r = int(arr[n][n1][0]) - g = int(arr[n][n1][1]) - b = int(arr[n][n1][2]) - sum_color += r + g + b - sum_color = int(sum_color // 100) + sum_color += np.sum(arr[n][j:j+size][:]) + sum_color = sum_color // 100 def grayColor (): global n, n1 for n in range(i, i + size): - for n1 in range(j, j + size): - arr[n][n1][0] = int(sum_color // 50) * 50 // gray - arr[n][n1][1] = int(sum_color // 50) * 50 // gray - arr[n][n1][2] = int(sum_color // 50) * 50 // gray + arr[n][j:j+size][:] = int(sum_color // 50) * 50 // gray while i < length - 1: j = 0 - while j < length_first - 1: + while j < length - 1: sum_color = 0 sumColor() grayColor() From d0d76689511d7519e8429f56d9e9ab343bb13cf5 Mon Sep 17 00:00:00 2001 From: maksaevalisa Date: Sat, 20 Nov 2021 14:12:10 +0500 Subject: [PATCH 4/5] Fourth step --- filter.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/filter.py b/filter.py index a282f3b..5bab559 100644 --- a/filter.py +++ b/filter.py @@ -1,7 +1,9 @@ from PIL import Image import numpy as np -img = Image.open("img2.jpg") +imgURL = input("Укажите название исходного изображения >> ") +imgPermission = input("Укажите резрешение исходного изображения >> ") +img = Image.open(imgURL + '.' + imgPermission) arr = np.array(img) length = len(arr) @@ -31,5 +33,4 @@ def grayColor (): i = i + size res = Image.fromarray(arr) -res.show() res.save('res.jpg') \ No newline at end of file From 3138c0da5a1dc9902c2974195de74b48ae8689a9 Mon Sep 17 00:00:00 2001 From: maksaevalisa Date: Sat, 20 Nov 2021 16:43:24 +0500 Subject: [PATCH 5/5] Final refactoring --- filter.py | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/filter.py b/filter.py index 5bab559..841d972 100644 --- a/filter.py +++ b/filter.py @@ -2,35 +2,27 @@ import numpy as np imgURL = input("Укажите название исходного изображения >> ") -imgPermission = input("Укажите резрешение исходного изображения >> ") -img = Image.open(imgURL + '.' + imgPermission) -arr = np.array(img) +imgSave = input("Укажите как сохранить изображение >> ") +img = Image.open(imgURL) + +arrImages = np.array(img) +height = len(arrImages) +width = len(arrImages[0]) -length = len(arr) size = int(input("Введите размер мозайки >> ")) gray = int(input("Введите режим градации серого >> ")) +stepGrey = 256 // (gray - 1) -i = 0 - -def sumColor(): - global n, n1, sum_color - for n in range(i, i + size): - sum_color += np.sum(arr[n][j:j+size][:]) - sum_color = sum_color // 100 +def sumColor(arr, size, x, y): + return np.average(arr[x: x + size, y:y+size]) -def grayColor (): - global n, n1 - for n in range(i, i + size): - arr[n][j:j+size][:] = int(sum_color // 50) * 50 // gray +def grayColor(arr, size, x, y, sum_color, stepGrey): + arr[x: x + size, y:y+size] = int(sum_color // stepGrey) * stepGrey # sum_color - sum_color % gray_step -while i < length - 1: - j = 0 - while j < length - 1: - sum_color = 0 - sumColor() - grayColor() - j = j + size - i = i + size +for x in range(0, width, size): + for y in range(0, height, size): + sum_color = sumColor(arrImages, size, x, y) + grayColor(arrImages, size, x, y, sum_color, stepGrey) -res = Image.fromarray(arr) -res.save('res.jpg') \ No newline at end of file +res = Image.fromarray(arrImages) +res.save(imgSave) \ No newline at end of file