OpenCVで細かい処理はやりたいけどファイルの入出力はPillowでやりたい!
というかOpenCVで保存するとファイルでけぇ・・。
って時ありますよね。
そんなわけでPillow -> OpenCVとOpenCV -> Pillowするサンプルを書いてみました。
from PIL import Image
import cv2
import numpy as np
#PILデータで画像を読み込む
im = Image.open('t.jpg')
#OpenCVデータに変換
ocv_im = np.asarray(im)
#OpenCVで保存
cv2.imwrite("t_ocv.jpg",ocv_im)
#PILデータへ変換
pil_im = Image.fromarray(ocv_im)
#PILで保存
pil_im.save("t_pil.jpg")
で出てきたファイル。
なぜかt_ocv.jpgが限りなく青に近いブルー・・・。
調べてくとOpenCVさんはカラーがRGBではなくBGR・・・なんだそれ・・・。
というわけでocv_imをRGBに変換すれば問題なし。
cv2.imwrite("t_ocv.jpg",ocv_im)
↓
cv2.imwrite("t_ocv.jpg",ocv_im[:, :, ::-1].copy())
解決。以上。