Basic | PIL 파이썬 이미지 처리 라이브러리

PIL (pillow) 라이브러리

0. PIL 시작하기

아래와 같이 pip로 설치할 수 있다.

python3 -m pip install Pillow
from PIL from Image

그래픽 분야의 국룰 예시 이미지 Lenna 사용

img = Image.open("Lena.png")

Pillow의 Image 클래스에 구현된 open 메소드를 이용해 image 불러오기

(matplotlib) 불러온 이미지 시각화

from matplotlib.pyplot import imshow

imshow(img)

이미지 사이즈, 속성 확인하기

# size: 가로x세로 픽셀수, mode: 흑백/컬러
print("Size: {}, Mode: {}".format(img.size, img.mode))

1. 이미지 형태 변환

Crop (잘라내기)

(x1, y1): 잘라내기를 시작할 좌상단 좌표 (x2, y2): 잘라내기를 끝낼 우하단 좌표

img.crop((x1, y1, x2, y2))
imshow(img.crop((x1, y1, x2, y2)))

Rotate (회전하기)

degree: 반시계 방향으로 회전할 각도

imshow(img.rotate(degree))
imshow(img.rotate(degree, expand=True)) # 이미지 잘리지 않도록 크기 조절

Resize

이미지 크기와 비율을 조절할 수 있다.

imshow(img.resize((128, 128))) # 사이즈(픽셀수) 바뀜

imshow(img.resize((128, 256))) # 비율이 바뀜

2. 이미지 색상 변환

추가 모듈 import

from PIL import ImageEnhance

밝기 변화

enhancer = ImageEnhance.Brightness(img) # 밝기 조절을 수행하는 enhancer 객체 생성

imshow(enhancer.enhance(2)) # 밝기 2배로 조절 (밝아짐)
imshow(enhancer.enhance(0.5)) # 밝기 절반, (어두워짐)

대조 변화

contrast_enhancer = ImageEnhance.Contrast(img)
imshow(contrast_enhancer.enhance(2))

흑백 변화

convert 메소드 활용

import matplotlib.pyplot as plt

img_gray = img.convert("L")
print("흑백 사진 모드:", img_gray.mode)
imshow(img_gray, cmap=plt.get_cmap("gray"))

3. 필터 변환

filter 메소드 활용

from PIL import ImageFilter

### 1. sharpening 필터
img_sharpen = img.filter(ImageFilter.SHARPEN)

### 2. blur 필터
img_blur = img.filter(ImageFilter.BLUR)

### 3. 경계선 탐지 필터
img_edge = img.filter(ImageFilter.FIND_EDGES)

### 필터를 여러번 적용해 필터 강도를 높일 수 있다.
img_blur_3 = img.filter(ImageFilter.BLUR)
img_blur_3 = img.filter(ImageFilter.BLUR)
img_blur_3 = img.filter(ImageFilter.BLUR)