opencv와 PIL이 이미지를 저장하는 방식의 차이

opencv는 컬러 이미지를 BGR로 저장하는데, PIL은 RGB로 저장한다

 

그래서 동일한 이미지를 opencv로 read할때와 PIL로 open할때 plt.imshow()하면 보이는게 다르다

 

from imageio import imread
from PIL import Image
import cv2
import matplotlib.pyplot as plt

#opencv를 이용하여 이미지 load 후 시각화
img = cv2.imread(kitten_path)
plt.imshow(img)
plt.show()

 

 

opencv로 열면 파란색이 먼저 보임

 

 

 

 

# PIL을 이용하여 이미지 load후 시각화
img_ = Image.open(kitten_path)
plt.imshow(img_)
plt.show() #image will not be displayed without this

 

 

하지만 PIL로 열면... 정상적인 이미지로 보임

 

 

 

opencv로 열때, BGR을 RGB로 바꿔주고 plt.imshow()를 하면 정상적으로 보이게 할 수 있다

 

#BGR image를 RGB로 변경 후에 시각화
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
plt.show()

 

 

 

 

추가적으로 PIL로 open하면 PIL 객체로 저장되는데, cv2로 read하면 numpy array로 저장되는 것도 확인할 수 있다

 

print(type(img))
print(img_)

<class 'numpy.ndarray'>
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=400x266 at 0x79206DF80DC0>

 

 

 

https://crmn.tistory.com/49

 

[OpenCV] BGR 사진을 RGB 사진으로 변환하기 (cvtColor, 파이썬)

[OpenCV] BGR 사진을 RGB 사진으로 변환하기 (cvtColor, 파이썬) 파이썬에서 OpenCV를 사용해서 사진을 matplotlib 으로 화면에 출력하는 방법입니다. 컬러 사진을 OpenCV에서는 BGR 순서로 저장하는데 matplotlib

crmn.tistory.com

 

TAGS.

Comments