일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- hive
- gas
- google apps script
- PANDAS
- list
- Java
- django
- math
- Apache
- c#
- SQL
- dataframe
- Mac
- Kotlin
- GIT
- Excel
- array
- Python
- PostgreSQL
- string
- Google Spreadsheet
- 파이썬
- Google Excel
- Tkinter
- numpy
- Redshift
- PySpark
- Github
- matplotlib
- Today
- Total
달나라 노트
Python matplotlib : imread, imshow (png 이미지를 읽어서 출력하기) 본문
Python matplotlib : imread, imshow (png 이미지를 읽어서 출력하기)
CosmosProject 2022. 1. 2. 03:09
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파일로 저장할 수 있습니다.
그 결과는 아래와 같습니다.
'Python > Python matplotlib' 카테고리의 다른 글
Python matplotlib : twinx, twiny, subplot (여러 개의 그래프를 한 화면에 나타내기) (0) | 2022.01.12 |
---|---|
Python matplotlib : xticks rotation (x 축 눈금 레이블 회전시키기) (0) | 2022.01.12 |
Python matplotlib : imshow (array에 색을 채워 이미지로 표시하기) (0) | 2022.01.02 |
Python matplotlib : savefig (그래프를 이미지로 만들기) (0) | 2022.01.02 |
Python matplotlib : pyplot (Python으로 그래프 그리기) (2) | 2021.07.26 |