Python OpenCV 와 PIL 의 상호 변환

공유하기

  • Add this entry to Hatena Bookmark
  • 0

사진이나 동영상 처리 같이 고급 이미지 처리를 할 수 있는 추가 패키지 OpenCV의 이미지 형식과 크기 조절, 회전, 부분 자르기와 같은 간단한 작업을 하는 추가 패키지 FIL(Python Imaging Library)의 이미지 형식을 상호 변환하는 방법을 소개합니다.

PIL 이미지를 OpenCV 이미지로 변환하기

변환 샘플 소스 작성하기

다음 소스 코드를 pil2opencv.py파일로 저장해서 실행합니다.

import cv2
import numpy as np
from PIL import Image

# open image using PIL
pil_image=Image.open("./learning_python.png")

# use numpy to convert the pil_image into a numpy array
numpy_image=np.array(pil_image)  

# convert to a openCV2 image and convert from RGB to BGR format
opencv_image=cv2.cvtColor(numpy_image, cv2.COLOR_RGB2BGR)

#display image to GUI
cv2.imshow("PIL2OpenCV",opencv_image)

소스 설명

  1. Image 클래스의 open()를 사용하여 지정 파일을 PIL Image (RGB)로 메모리에 읽어들입니다.
  2. 메모리상의 PIL Image (RGB)를 numpy배열로 변환합니다.
  3. numpy배열을 메모리상의OpenCV image (BGR)로 변환합니다.
  4. 메모리상의 OpenCV image (BRG)를 imshow()를 사용하여 화면에 이미지를 표시합니다.

샘플 이미지 파일 다운로드

Image 클래스의 open()함수에 지정된 learning_python.png파일은 이름 위 링크를 눌러 다운로드하고 pil2opencv.py파일과 같은 장소에 저장합니다.

OpenCV 이미지를 PIL 이미지로 변환하기

변환 샘플 소스 작성하기

다음 소스 코드를 opencv2pil.py파일로 저장해서 실행합니다.

import cv2
from PIL import Image

#open image using openCV2
opencv_image=cv2.imread("./learning_python.png")

#display image to GUI
cv2.imshow("PIL2OpenCV", opencv_image)

# convert from BGR to RGB
color_coverted = cv2.cvtColor(opencv_image, cv2.COLOR_BGR2RGB)

# convert from openCV2 to PIL
pil_image=Image.fromarray(color_coverted)

샘플 이미지 파일 다운로드

cv2.imread()함수에 지정된 learning_python.png파일은 이름 위 링크를 눌러 다운로드하고 opencv2pil.py파일과 같은 장소에 저장합니다.

소스 설명

  1. OpenCV의 imread()를 사용하여 지정 파일을 OpenCV Image (BGR)로 메모리에 읽어들입니다.
  2. 메모리상의 OpenCV Image (BGR)를 imshow()를 사용하여 화면에 이미지를 표시합니다.
  3. 메모리상의 OpenCV Image (BRG)를 RGB로 변환합니다.
  4. OpenCV Image (RGB)를 PIL Image (RGB)로 변환합니다.