Algorithms / Gaussian blur / 모자이크
▼원본▼
▼LV.6▼
▼blur.py▼
from imageio import imread, imsave
from PIL import Image
import sys
def update_progress(progress):
print("\rProgress: [{0:50s}] {1:.1f}%".format('#' * int(progress * 50), progress*100), end="", flush=True)
def average(img, x, y, blurfactor):
# Each function itself return the each pixel's average rgb value.
# More blur factor is higher level of blur effect.
width = img.shape[1]
height = img.shape[0]
rtotal = gtotal = btotal = 0
for y2 in range(y - blurfactor, y + blurfactor+1):
for x2 in range(x - blurfactor, x + blurfactor+1):
if (y2 not in range(height)) or (x2 not in range(width)):
continue
else:
r, g, b = (int(img[y2,x2,0]), int(img[y2,x2,1]), int(img[y2,x2,2]))
(rtotal,gtotal,btotal) = (rtotal+r,gtotal+g,btotal+b)
(rAverage,gAverage,bAverage) = (rtotal//((blurfactor*2+1)**2)), (gtotal//((blurfactor*2+1)**2)), (btotal//((blurfactor*2+1)**2))
return (rAverage, gAverage, bAverage)
def blur(blurfactor):
# Default file name is 'cat.jpg'.
img = imread('cat.jpg')
width = img.shape[1]
height = img.shape[0]
img2 = Image.new("RGB", (width, height), (0,0,0))
for y in range(height):
for x in range(width):
r, g, b = average(img, x, y, blurfactor)
img2.putpixel((x,y), (r,g,b))
progress = (y)/(height-blurfactor)
update_progress(progress)
update_progress(1)
img2.save('blur.jpg')
img2.show()
def main():
blur(int(sys.argv[1]))
if __name__ == '__main__':
main()
터미널에서
[blurfactor]
를 숫자로 대체해서 실행하면 작동한다.
숫자가 높아질수록 시간이 더 오래걸린다.
같은 경로에cat.jpg
라는 이름을 가진 파일이 있어야 하며 프로그램이 다 돌아간 후엔blur.jpg
로 새롭게 저장된다.
▼사용법▼
python blur.py [blurfactor]
▼LV.6 예시▼
python blur.py 6
처음에
blurfactor
라는 정수를 입력받는다. 입력받는 이유는 사진의 픽셀 모두를 돌아가면서 주변 픽셀의 평균색을 구한 후 현재 픽셀에 넣는 방식으로 모자이크를 처리하는데 이때blurfactor
라는 변수가 주변을 검색하는 범위의 척도로 사용된다.
blur
함수에서 픽셀 하나하나가 반복문에 의해 순차적으로 매번average
함수를 실행시키는데 이때 이 함수가blurfactor
의 범위에서 평균색 값을 구하는 역할을 한다.
average
함수는 현재 픽셀을 기준으로 위, 아래blurfactor
만큼의 범위를 포함하는 정사각형 내에 들어가는 모든 픽셀의 평균 색을 구한다.
Author And Source
이 문제에 관하여(Algorithms / Gaussian blur / 모자이크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kon6443/Algorithms-Gaussian-blur-모자이크저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)