Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 이미지 다루기: OpenCV와 PIL로 이미지 읽고 저장하는 방법


OpenCV를 활용한 이미지 처리

OpenCV(Open Source Computer Vision)는 머신러닝과 컴퓨터 비전을 위해 개발된 오픈소스 프로그래밍 라이브러리입니다. 컴퓨터 비전 애플리케이션을 개발하고 상용 제품에 머신러닝을 빠르게 적용할 수 있도록 공통 인프라를 제공합니다.

OpenCV에는 클래식 알고리즘부터 최신(state-of-the-art) 알고리즘까지 총 2,500개 이상의 최적화된 알고리즘이 포함되어 있습니다. 덕분에 얼굴 검출 및 인식, 객체 식별, 영상 속 사람의 동작 분류, 카메라 움직임 추적, 여러 이미지를 합성해 고해상도 파노라마 이미지를 만드는 등 다양한 용도로 활용할 수 있습니다.

이 글에서는 OpenCV 라이브러리와 파이썬을 사용해 이미지를 읽고 화면에 표시하는 방법을 설명합니다. 구현에는 cv2 모듈과 NumPy 모듈을 사용합니다.

NumPy 모듈은 Python Package Index(PyPI)에서 다운로드할 수 있습니다.

$ pip install numpy

이미지 읽기

이미지를 읽을 때는 cv2.imread() 함수를 사용합니다. 이미지 파일이 현재 작업 디렉터리에 없다면 절대 경로를 지정해 주어야 합니다.

import numpy as np
import cv2
# 컬러 이미지를 그레이스케일로 불러오기
img = cv2.imread('Top-bike-wallpaper.jpg',0)

이미지 표시하기

창에 이미지를 표시하려면 cv2.imshow() 함수를 사용합니다.

# 이미지 표시
cv2.imshow('image',img)
# 키 입력 대기 함수
cv2.waitKey(0)
# 앞서 생성한 모든 창 닫기
cv2.destroyAllWindows()

위 코드를 실행하면 아래와 같은 창이 나타납니다.

파이썬으로 이미지 다루기: OpenCV와 PIL로 이미지 읽고 저장하는 방법

이미지 저장하기

이미지를 파일로 저장할 때는 cv2.imwrite() 함수를 사용합니다.

첫 번째 인자는 저장할 파일 이름, 두 번째 인자는 저장하려는 이미지입니다.

cv2.imwrite('messigray.png',img)

전체 코드 정리 −

import numpy as np
import cv2

# 이미지 읽기
# 컬러 이미지를 그레이스케일로 불러오기
img = cv2.imread('Top-bike-wallpaper.jpg',0)

# 이미지 표시
cv2.imshow('image',img)

# 키 입력 대기
k = cv2.waitKey(0)

# ESC 키를 누르면 저장하지 않고 종료
if k == 27:
   cv2.destroyAllWindows()
# 's' 키를 누르면 이미지를 저장하고 종료
elif k == ord('s'):
   cv2.imwrite('myBike.jpg',img)
   cv2.destroyAllWindows()

's' 키를 누르면 이미지가 저장되고, 'ESC' 키를 누르면 저장하지 않고 그냥 종료됩니다.

PIL(Python Imaging Library) 사용하기

PIL(Python Imaging Library)은 파이썬의 대표적인 이미지 조작 라이브러리입니다. pip로 간단히 설치할 수 있습니다.

$ pip install Pillow

설치 후 다음과 같이 필요한 모듈을 임포트합니다.

from PIL import Image, ImageFilter
# 이미지 읽기
im = Image.open('myBike.png')

# 이미지 표시
im.show()

# 이미지에 필터 적용
im_sharp = im.filter(ImageFilter.SHARPEN)

# 필터가 적용된 이미지를 새 파일로 저장
im_sharp.save('another_Bike.jpg', 'JPEG')

실행 결과

파이썬으로 이미지 다루기: OpenCV와 PIL로 이미지 읽고 저장하는 방법

저장된 이미지는 기본 위치인 현재 작업 디렉터리에 생성되며, 창을 통해 결과 이미지를 확인할 수 있습니다.