search
LoginSignup
14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Pillowで読み込んだデータをOpenCVで扱えるように変換するとブルーになる話

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
t_ocv.jpg

t_pil.jpg
t_pil.jpg

なぜかt_ocv.jpgが限りなく青に近いブルー・・・。

調べてくとOpenCVさんはカラーがRGBではなくBGR・・・なんだそれ・・・。

というわけでocv_imをRGBに変換すれば問題なし。

cv2.imwrite("t_ocv.jpg",ocv_im)


py
cv2.imwrite("t_ocv.jpg",ocv_im[:, :, ::-1].copy())

解決。以上。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
14
Help us understand the problem. What are the problem?