\

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の間で画像データを簡単に変換することができます。これにより、各ライブラリの強みを活かした画像処理が可能になります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です