Pythonで画像処理を行う際、OpenCVとPillowはよく使われるライブラリです。しかし、これらのライブラリはそれぞれ異なるデータ形式を使用しているため、相互に変換する必要があります。この記事では、PythonでOpenCVとPillowの間で画像データを変換する方法を紹介します。
OpenCVとPillowの間での画像データの変換
PillowからOpenCVへの変換
Pillowの画像データをOpenCVの形式に変換するには、以下の関数を使用します。
import numpy as np
import cv2
def pil2cv(image):
''' PIL型 -> OpenCV型 '''
new_image = np.array(image, dtype=np.uint8)
if new_image.ndim == 2: # モノクロ
pass
elif new_image.shape[2] == 3: # カラー
new_image = cv2.cvtColor(new_image, cv2.COLOR_RGB2BGR)
elif new_image.shape[2] == 4: # 透過
new_image = cv2.cvtColor(new_image, cv2.COLOR_RGBA2BGRA)
return new_image
OpenCVからPillowへの変換
逆に、OpenCVの画像データをPillowの形式に変換するには、以下の関数を使用します。
from PIL import Image
import cv2
def cv2pil(image):
''' OpenCV型 -> PIL型 '''
new_image = image.copy()
if new_image.ndim == 2: # モノクロ
pass
elif new_image.shape[2] == 3: # カラー
new_image = cv2.cvtColor(new_image, cv2.COLOR_BGR2RGB)
elif new_image.shape[2] == 4: # 透過
new_image = cv2.cvtColor(new_image, cv2.COLOR_BGRA2RGBA)
new_image = Image.fromarray(new_image)
return new_image
これらの関数を使用することで、PythonのOpenCVとPillowの間で画像データを簡単に変換することができます。これにより、各ライブラリの強みを活かした画像処理が可能になります。