Basic | PIL 파이썬 이미지 처리 라이브러리
in Machine Learning / Basic
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)