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()위 코드를 실행하면 아래와 같은 창이 나타납니다.

이미지 저장하기
이미지를 파일로 저장할 때는 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')실행 결과

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