読者です 読者をやめる 読者になる 読者になる

tataboxの備忘録

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

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

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, :, ::-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⇒PIL色変換、上下反転なし")
plt.subplot(1,3,3),plt.imshow(CV2PIL_normalize)
plt.title(u"CV⇒PIL")
plt.show()

f:id:tatabox2000:20130721232142p:plain

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

::-1で逆順変換、すなわち上下反転及びBGR⇒RGB変換を行なっている。