반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

오늘은 이미지를 많이 다루고 처리하는 분들을 위해서 파이썬으로 이미지를 다룰 수 있게 해주는 Pillow라는 라이브러리에 대해서 공부해보겠습니다.

 

오늘 배워볼 내용은 컬러 이미지를 흑백으로 만드는 것과 이미지에 필터 효과를 주는 방법입니다.

 

시작하기에 앞서 관련 패키지를 import하고 첫 시간에 다운로드 받았던 고양이 사진을 불러오겠습니다.

 

# Pillow 라이브러리 불러오기
from PIL import Image

# 고양이 이미지 불러와서 img라는 변수에 입력
img = Image.open('cat.jpg')

 

1. 컬러 이미지 흑백으로 만들기

 

이미지의 모드(mode)를 변환시킬 때는 convert( ) 함수를 사용합니다. 이미지의 모드에는 정말 다양한 형식들이 있지만 우리가 일상에서 사용할만한 것은 RGB 트루 컬러(8bit)와 흑백(8bit)가 거의 대부분이 아닐까 합니다.

 

# RGB로 표현된 컬러 이미지를 흑백으로 변경
img_gray = img.convert("L")

# 흑백으로 변환된 이미지 출력
img_gray.show()

 

<출력 결과>

 

참고로 위의 코드를 실행하시면 우측의 흑색 사진만 출력되지만 비교를 위해서 원본 이미지도 넣었습니다.

 

'L' 대신에 다양한 mode들을 넣으시면 다른 이미지가 출력되니 궁금하신 분들은 테스트 해보세요.

 

1 (1비트 픽셀, 흑백, 바이트당 1픽셀로 저장)

L (8비트 픽셀, 흑백)

P (8비트 픽셀, 색상 팔레트를 사용하여 다른 모드에 매핑됨)

RGB (3x8비트 픽셀, 트루 컬러)

RGBA (4x8비트 픽셀, 투명 마스크가 있는 트루 컬러)

CMYK (4x8비트 픽셀, 색상 분리)

YCbCr (3x8비트 픽셀, 컬러 비디오 형식)

LAB (3x8비트 픽셀, L*a*b 색 공간)

HSV (3x8비트 픽셀, 색조, 채도, 값 색 공간)

I (32비트 부호 있는 정수 픽셀)

F (32비트 부동 소수점 픽셀)

 

참고링크: https://pillow.readthedocs.io/en/stable/handbook/concepts.html

 

 

2. 이미지에 필터 부여하기

 

이미지에 필터를 부여하고 싶을 때에는 filter( ) 함수를 사용합니다. 단, 필터 함수를 사용하려면 아래의 모듈을 import 해주어야 합니다.

 

from PIL import ImageFilter

 

제공 되는 필터는 아래의 필터들 외에도 다양하며, 아래의 링크를 참고하셔서 사용하시면 됩니다.

 

https://pillow.readthedocs.io/en/stable/_modules/PIL/ImageFilter.html#MaxFilter

 

  • BLUR : BLUR, BoxBlur( ), GaussianBlur( )
  • MedianFilter( ), MinFilter( ), MaxFilter( ) 등
  • CONTOUR
  • DETAIL
  • EDGE_ENHANCE, EDGE_ENHANCE_MORE
  • EMBOSS
  • FIND_EDGES
  • SHARPEN
  • SMOOTH, SMOOTH_MORE

 

사용 방법은 아래와 같습니다.

 

1) 블러 효과를 주고 싶을 때

# Blur 효과를 줄 때 가장 많이 사용하는 가우시안 블러 --> 숫자를 크게 할 수록 흐려짐
img_blur = img.filter(ImageFilter.GaussianBlur(10))

# 이미지 출력
img_blur.show()

 

2) 이미지의 엣지를 더 강조하고 싶을 때

img_edge = img.filter(ImageFilter.EDGE_ENHANCE)

img_edge.show()

 


오늘 준비한 내용은 여기까지입니다.

 

다음 시간에는 이미지에 텍스트(워터마크)를 넣는 방법을 공부해 보겠습니다.

 

반응형

+ Recent posts