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()
CV_im_RGB = CV_im[:, :, ::-1].copy()
最後の::-1で逆順変換、BGR⇒RGB変換を行なっている。