이미지 처리란 무엇이고, 왜 중요한가?
이미지 처리(Image Processing)는 사진, 그림, 영상과 같은 이미지 파일을 컴퓨터로 읽고, 수정하거나 분석하는 기술입니다.이미지 처리는 다음과 같은 분야에서 핵심 역할을 합니다.
- 머신러닝/AI: 얼굴 인식, 물체 인식, OCR
- 웹 개발: 이미지 리사이징, 썸네일 생성
- 데이터 분석: 위성 이미지, 의료 영상 분석
- 자동화 작업: 폴더 내 이미지 일괄 수정
파이썬에서는 이미지 처리에 활용할 수 있는 다양한 라이브러리가 있습니다. 그 중 가장 기본적이고 접근하기 쉬운 도구는 Pillow입니다.
Pillow 설치 및 기본 사용법
1. 설치하기
pip install Pillow
2. 이미지 열기, 저장하기
from PIL import Image
img = Image.open("sample.jpg") # 이미지 불러오기
img.save("복사본.jpg") # 새 이름으로 저장
이미지를 불러오면 다양한 조작을 할 수 있습니다. 저장 시 포맷(jpg, png, etc)도 변경할 수 있습니다.
3. 이미지 크기 확인과 리사이징
print(img.size) # (가로, 세로)
# 크기 조절
resized_img = img.resize((200, 200))
resized_img.save("resized.jpg")
웹 개발에서 썸네일 이미지 생성 시 자주 사용되는 기능입니다.
4. 이미지 회전 및 흑백 변환
# 회전
rotated = img.rotate(90)
rotated.save("rotated.jpg")
# 흑백 변환
gray = img.convert("L")
gray.save("gray.jpg")
rotate()
는 시계 방향으로 각도 회전하며, convert("L")
은 흑백 이미지로 바꿔줍니다.
5. 이미지 일괄 처리
import os
from PIL import Image
folder = "images"
for filename in os.listdir(folder):
if filename.endswith(".jpg"):
img_path = os.path.join(folder, filename)
img = Image.open(img_path)
resized = img.resize((128, 128))
resized.save(os.path.join("resized", filename))
이 스크립트는 특정 폴더의 JPG 이미지를 모두 불러와 128x128 크기로 조절한 후 새로운 폴더에 저장합니다. 이미지 수가 많을 때 자동화할 수 있어 매우 실용적입니다.
이미지 수정 및 다루기 실전 활용
1. 이미지 포맷 변환기
img = Image.open("photo.png")
img.convert("RGB").save("photo.jpg", "JPEG")
PNG → JPG 등 포맷을 변경할 수 있으며, 배경 투명도를 제거할 때도 사용됩니다.
2. 이미지에 텍스트 삽입
from PIL import ImageDraw, ImageFont
img = Image.open("sample.jpg")
draw = ImageDraw.Draw(img)
font = ImageFont.load_default()
draw.text((10, 10), "Hello, Python!", font=font, fill=(255, 255, 255))
img.save("text_added.jpg")
ImageDraw
와 ImageFont
를 이용하면 이미지에 문구나 워터마크를 삽입할 수 있습니다.
3. 썸네일 자동 생성기
img.thumbnail((100, 100))
img.save("thumbnail.jpg")
썸네일은 비율을 유지한 채 이미지를 축소하는 방식이며, 블로그, 쇼핑몰, 포트폴리오 사이트 등에서 활용됩니다.
- 블로그 운영자: 이미지 크기 통일, 자동 워터마크 삽입
- 개발자: 프로필 이미지 리사이징, 업로드 전 처리
- AI 학습자: 훈련용 이미지 전처리 자동화
Pillow는 이미지 전처리, 자동화, 간단한 편집 작업에 매우 강력한 도구이며, 초보자도 쉽게 시작할 수 있습니다. 더 복잡한 기능이 필요할 경우 OpenCV, scikit-image 등으로 확장도 가능합니다.