IT/파이썬

[Python] PIL.Image로 이미지 파일 열어 보기

천사환 2024. 5. 21. 01:19
반응형

다음으로 image 파일을 간단하게 열어서 보는 걸 해보려고 합니다.

 

일단 PIL.Image 모듈이 필요합니다. 약어인 pilimg로 호출을 해줍니다.

 

import matplotlib.pyplot as plt

import numpy as np

import PIL.Image as pilimg

 

이미지 파일은 픽셀 정보가 행렬로 들어 있기 때문에 numpy도 불러주고요, 결국에 이미지를 띄우기 위한 matplotlib.pyplot도 불러줍니다.

 

점점 불러야하는 모듈들이 쌓이고 있는 느낌입니다. 

 


다음은 파일 경로를 입력해줍니다.

 

저는 바탕화면에 있는 'sulworld.jpg'를 지정하였습니다.

경로를 지정할 때 조심해야 할 부분은 string으로 입력을 하는 것이기 때문에 백슬래시( \ )를 입력하고 싶으면 escape sequence로 두 번(\\) 입력해주셔야 한다는 것입니다.

 

그리고 이미지는 pilimg.open()으로 열어줍니다.

열어준 img는 날 것의 데이터인 느낌이라서 np.array()를 활용해서 행렬로 저장해줍니다. 

 

 

print(np.min(img_array))
print(np.max(img_array))

print(img_array.dtype)

 

행렬 정보를 슬쩍 살펴보면 0부터 255의 uint8의 픽셀값으로 구성되어 있습니다. 

 

이미지를 띄울 때는 그래프를 그릴 때와 마찬가지로 일단 figure 창을 만들어줍니다.

그 다음이 plt.imshow()를 쓰면 그림이 그려집니다.

이 부분은 MATLAB이랑 비슷한 것 같습니다. color map도 정해줄 수 있습니다.

옵션으로 cmap = 'gray'를 입력하면, gray 이미지를 열 수 있습니다. 

 

plt.imshow(img_array, cmap = 'gray')

 

대신 그래프에서 마찬가지로 실제로 보기 위해서는 plt.show()를 입력해주어야 합니다.

 

 

그럼 위와 같이 딱 이미지가 나오게 됩니다. 

가로 세로축에 숫자가 보기가 싫죠.

 

plt.axis('off')

 

이렇게 알고 있어서 하고 ChatGPT도 맞다고 하는데

 

쥬피터에서 오류가 뜨네요.

 

스파이더에서는 작동을 하는데 좀 찝찝하기는 합니다.

아무튼 이렇게 이미지를 열어 볼 수 있습니다.

반응형