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>
'프로그래밍 > Python' 카테고리의 다른 글
Python 개발의 문서화 도구 Sphinx 사용해보기 (0) | 2023.12.14 |
---|---|
Python으로 유튜브 영상 다운로드하는 방법 (0) | 2023.12.12 |
시간을 줄이는 테크닉 - 파이썬에서 함수형 코드를 적극적으로 활용해야하는 이유(+ if __name__ == "__main__"의 활용?) (0) | 2023.08.13 |
집합 set의 메소드 (0) | 2022.08.01 |
딕셔너리의 메소드 (0) | 2022.08.01 |
TAGS.