선형대수 공부를 하던 중 책에 있는 이미지 출력 코드를 실행했는데
코드에는 문제 없이 정상적으로 돌아갔는데 그 어디에서도 이미지는 보이지 않았다.
멘탈 부여 잡고 해결책을 찾기 시작했고, 좋은 해결책을 찾아서 아래와 같이 기록해본다!
먼저, 파이썬(주피터)에서 주어진 데이터를 이미지화 할 때 아래와 같이 여러 방법이 있다.
1. PIL (Python Imaging Library): 이미지 분석 및 처리를 할 수 있는 패키지
2. Matplotlib: 각종 그래프나 차트 등을 그리는 시각화 기능을 제공하는 패키지
3. OpenCV: 영상 처리나 computer vision 관련 기능을 제공하는 패키지
그 중 3번 방법인 matplotlib 패키지를 사용해서 이미지를 만들 때, 주피터 내부에서 이미지가 보이지 않는 경우가 있다.
import matplotlib.pylab as plt
(중간 내용 생략)
plt.figure(figsize=(8,2))
for i in range(8):
plt.subplot(1, 8, i+1)
plt.imshow(d[i], interpolation='nearest', cmap=plt.cm.bone_r)
plt.grid(False); plt.xticks([]); plt.yticks([])
plt.title('image {}'.format(i + 1))
plt.suptitle('the image of number 0 and 1')
plt.tight_layout()
plt.show()
plt.show() 함수를 넣으면 위에 입력한 코드에 맞춰 완성된 이미지가 보여져야 한다.
그런데.. 코드에도 이상이 없는데 아무리 실행해도 이미지가 보이지 않아서 블로그 전문가분들의 해결책을 찾아보았다.
1. plt.figure()을 먼저 넣고 그 다음 코드를 입력해야 한다. (미술로 치면 그림을 그릴 수 있는 캔버스가 필요하다는 것) > 있음
2. plt.imshow() 이미지를 보기위한 함수를 추가해야 한다. > 있음
위 해결책 (함수)는 이미 입력을 해놓은 상태고,
대부분 검색해보면 OpenCV 패키지를 이용해서 이미지 출력시 보이지 않는 현상에 대한 내용만 있어서 해외 전문가 분들의 해결책을 찾아보였다.
"To show image in Jupyter Notebook by matplotlib, one should use the %matplotlib inline magic command and plt.show()."
그러니까 주피터 노트북에서 matplotlib을 이용해 이미지를 출력하고 싶으면 %matplotlib inline magic command 와 plt.show()가 필요하다고 한다. 나같은 경우에는 %matplotlib inline magic command 만 추가하면 된다.
Magic Command 는 패키지 불러오는 함수 위에 써주면 된다.
%matplotlib inline #magic command
import matplotlib.pylab as plt
(중간 내용 생략)
plt.figure(figsize=(8,2))
for i in range(8):
plt.subplot(1, 8, i+1)
plt.imshow(d[i], interpolation='nearest', cmap=plt.cm.bone_r)
plt.grid(False); plt.xticks([]); plt.yticks([])
plt.title('image {}'.format(i + 1))
plt.suptitle('the image of number 0 and 1')
plt.tight_layout()
plt.show()
이렇게 되면 아래와 같이 이미지가 나온다!
만약, 이미지를 저장하고 싶으면 끝에 plt.savefig('파일이름.확장자')를 추가하면 된다.
%matplotlib inline #magic command
import matplotlib.pylab as plt
(중간 내용 생략)
plt.figure(figsize=(8,2))
for i in range(8):
plt.subplot(1, 8, i+1)
plt.imshow(d[i], interpolation='nearest', cmap=plt.cm.bone_r)
plt.grid(False); plt.xticks([]); plt.yticks([])
plt.title('image {}'.format(i + 1))
plt.suptitle('the image of number 0 and 1')
plt.tight_layout()
plt.show()
plt.savefig('text.png') # 이미지 파일 저장하기
저장된 이미지는 주피터 디렉토리에서 확인할 수 있다. (test.png 파일)
* 해외 github 블로그 중 matplotlib을 이용해 image display 하는 방법을 코드와 함께 자세히 설명해놓은 자료
"Using matplotlib to display inline images"
'Programming (프로그래밍) > Error (오류 해결 모음집)' 카테고리의 다른 글
[깃허브] Jekyll Theme 업데이트가 안될 때 - Commit/Setup Ruby 에러 해결법 (0) | 2023.12.29 |
---|