Python/Python matplotlib

Python matplotlib : imread, imshow (png 이미지를 읽어서 출력하기)

CosmosProject 2022. 1. 2. 03:09
728x90
반응형

 

 

 

matplotlib는 굉장히 재미있는 기능들을 제공하는데 그 중에선 image 파일을 읽어서 그래프로 나타내주는 기능을 제공합니다.

 

 

 

 

제가 이전에 먹었던 녹차빙수 사진을 한번 matplotlib를 이용해서 그래프 위에 나타내보겠습니다.

 

 

 

 

 

import matplotlib.pyplot as plt
import matplotlib.image as img

img_test = img.imread('greentea_ice_flakes.png')
plt.imshow(img_test)
plt.show()

 

directory 구조는 위와 같습니다.

 

pyplot.py 파일에 위 예시코드가 적혀있으며

greentea_ice_flakes.png 파일이 바로 제가 먹었던 녹차빙수 사진입니다.

 

 

- img_test = img.imread('greentea_ice_flakes.png')

matplotlib.image.img에서 imread method를 이용해 이미지를 읽어옵니다.

 

- plt.imshow(img_test)
- plt.show()

그리고 image를 표시해줍니다.

(imshow method만으로는 좌표평면이 표시되는 결과 창이 나타나지 않을 수 있으므로 이런 경우 show method를 추가로 사용해줍시다.)

 

 

예시 코드를 실행하면 위 캡쳐 이미지처럼 저의 빙수 사진이 좌표평면 위에 표시됩니다.

 

이렇게 imshow는 image 파일의 정보를 받아서 그것을 좌표평면 위에 표시해줍니다.

 

https://cosmosproject.tistory.com/414

원리는 위 링크에 있는 내용과 비슷하다고 보시면 됩니다.

이미지의 픽셀별 색상을 체크하고 각 픽셀의 색상을 좌표평면 위에 표시해주는 것입니다.

 

 

 

 

 

 

import matplotlib.pyplot as plt
from PIL import Image

img_test = Image.open('greentea_ice_flakes.png')
plt.imshow(img_test)
plt.show()

 

사실 maplotlib의 imshow method는 parameter로서 이미지 객체를 받으면 됩니다.

따라서 matplotlib.image를 이용하지 않고 PIL의 Image를 이용하여 image를 읽어와도 됩니다.

이미지 객체를 만들어서 imshow method의 parameter로 전달하기만 하면 되니까, 위 코드처럼 어떻게든 이미지를 읽어와서 imshow에 전달하면 그것을 좌표평면 위에 나타낼 수 있죠.

 

결과는 동일합니다.

 

 

 

 

 

import matplotlib.pyplot as plt
import matplotlib.image as img

img_test = img.imread('greentea_ice_flakes.png')
plt.imshow(img_test)

plt.savefig('result_ice_flakes.png',
            facecolor='#eeeeee',
            edgecolor='black',
            format='png', dpi=200)

또한 위처럼 savefig method를 이용하면 좌표평면에 나타낸 이미지를 다시 png파일로 저장할 수 있습니다.

 

그 결과는 아래와 같습니다.

 

 

 

 

 

 

728x90
반응형