Python OpenCV 와 PIL 의 상호 변환

공유하기

  • Add this entry to Hatena Bookmark
  • 0

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

PIL image를 OpenCV image로 변환하기

변환 샘플 소스

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()를 사용하여 화면에 이미지를 표시합니다.

샘플 이미지 파일 다운로드

여기의 샘플 이미지를 다운로드하여 위의 소스를 실행 할 수 있습니다.

learning_python.png

OpenCV image를 PIL image로 변환하기

변환 샘플 소스

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)

소스설명

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

샘플 이미지 파일 다운로드

여기의 샘플 이미지를 다운로드하여 위의 소스를 실행 할 수 있습니다.

learning_python.png