반응형

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

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

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

 

 

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

 

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

 

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

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

 

1. 이미지 크기 변경

 

이미지 크기 변경은 resize( ) 함수를 사용합니다. 사이즈는 튜플 형식 (width, height)으로 입력해줍니다.

 

# 이미지 사이즈 변경
img_resized = img.resize((400,300))

# 변경한 이미지 출력
img_resized.show()

# 비교를 위해 원본 이미지 출력
img.show()

 

<출력 결과>

 

 

2. 이미지 자르기

 

이미지의 일부분을 얻고 싶을 때는 crop( ) 함수를 사용합니다. 마찬가지로 인자를 튜플 형태 (left, upper, right, lower)로 입력 받습니다.

쉽게 생각해서 좌측상단의 xy좌표, 우측하단의 xy좌표를 차례대로 받는다고 생각하시면 돼요.

 

# 이미지 자르기
img_cropped = img.crop((0,0,300,300))

# 잘라낸 이미지 출력
img_cropped.show()

 

<출력 결과>

 

 

3. 이미지 회전

 

이미지를 회전 하고 싶으면 rotate( ) 함수를 사용합니다. 입력 인자는 각도입니다.

 

# 이미지 90도 회전
img_rotated = img.rotate(90, expand=1)

# 회전한 이미지 출력
img_rotated.show()

 

<출력 결과>

 

만약 expand 옵션을 설정해주지 않거나 0(기본값)으로 설정해주면, 원래 사진의 크기에 사진만 회전되어 잘려서 출력됩니다.

 

4. 이미지 대칭

 

이미지를 상하 혹은 좌우 대칭시키고 싶으면 transpose( ) 함수를 사용합니다. 입력 인자는 6가지가 있는데 대칭에 사용하는 인자는 아래의 2가지입니다. 나머지 인자들은 90도, 180도, 270도 회전과 관련되어 있습니다.

 

좌우대칭: Image.FLIP_LEFT_RIGHT

상하대칭: Image.FLIP_TOP_BOTTOM

 

# 좌우대칭
img_flipped_LR = img.transpose(Image.FLIP_LEFT_RIGHT)
img_flipped_LR.show()

# 상하대칭
img_flipped_TB = img.transpose(Image.FLIP_TOP_BOTTOM)
img_flipped_TB.show()

 

<출력 결과>

 

5. 이미지 저장

 

지금까지 편집한 이미지를 저장하려면 save( ) 함수를 사용하면 됩니다. 입력 받는 인자로는 '파일명.확장자' 혹은 '파일의 경로'입니다.

 

# 상하반전한 이미지 저장
img_flipped_TB.save('cat_flip.jpg')

 

<저장된 이미지>

 


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

 

오늘도 공부하시느라 고생 많으셨습니다.

반응형

+ Recent posts