OpenCVとPIL(Pillow)の画像変換
概要
Pythonで画像を扱う場合はPillowやOpenCVを用いると思います。ですが、OpenCVで開いた画像はNumpyのndarray
型であるため、Pillowで処理することはできません。そこで相互のライブラリでの画像変換についてまとめました。
やりたいこと
OpenCVの関数imread()
で画像を開いた後に, PIL Imageの形式に変更して使う。
OpenCV→PIL Image
Open CVのimread()
で開いた画像はnumpyのndarray型となっている。これをPIL Image型にするためには
- OpenCVで開いた場合は
BGR
フォーマットとなっているためRGB
フォーマットに変更する ndarray
型をPIL Image
型にする
必要がある。前者は
cv2.cvtColor()
関数
後者は
Image.fromarray()
関数
を用いることでできる。以下にコードを示す。
import cv2 import numpy as np from PIL import Image img = cv2.imread("hoge/hoge/img.png") # BGR画像→RGB画像に変換する img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) im_pil = Image.fromarray(img)