tata色々な備忘録

データ解析、画像解析、化学分析などなど

OpenCVとPIL(python Image library)のデータ変換

2018/5/6修正

OpenCVとPILの相互利用

OpenCVとPILのデータ変換。

PIL⇒OpenCVは下で問題なし。

import numpy as np
OpenCV_data=np.asarray(PIL_data)

OpenCV⇒PILは

from PIL import Image
PIL_data=Image.fromarray(OpenCV_data)

青画面の残念仕様になるので対策

import matplotlib.pyplot as plt
import cv2
import numpy as np
from PIL import Image 

#OpenCVまたはPILで読み込み
CV_im = cv2.imread("lena.jpg")
PIL_im= np.array(Image.open("lena.jpg"))

#BGRからRGBへ変換
CV_im_RGB = CV_im[:, :, ::-1].copy()

#変換
PIL2CV=np.asarray(PIL_im)
CV2PIL=Image.fromarray(CV_im)
CV2PIL_normalize=Image.fromarray(CV_im_RGB)

#描画
plt.subplot(1, 3, 1), plt.imshow(PIL2CV)
plt.title(u"PIL⇒CV")
plt.subplot(1, 3, 2), plt.imshow(CV2PIL)
plt.title(u"CV(BGR)⇒PIL")
plt.subplot(1, 3, 3), plt.imshow(CV2PIL_normalize)
plt.title(u"CV(RGB⇒PIL")
plt.show()

f:id:tatabox2000:20180506171954p:plain

CV_im_RGB = CV_im[:, :, ::-1].copy()

最後の::-1で逆順変換、BGR⇒RGB変換を行なっている。