데이터 시각화 작업을 하다 보면 여러 장의 이미지를 하나씩 차례대로 화면에 띄워야 하는 경우가 있습니다. Python의 대표적인 시각화 라이브러리인 Matplotlib를 사용하면 별도의 추가 라이브러리 없이도 이미지 시퀀스를 간단하게 표시할 수 있습니다.
구현 단계
Matplotlib로 이미지 시퀀스를 표시하려면 다음 단계를 따르면 됩니다.
- 그림 크기 설정: figure 크기를 지정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- 이미지 목록 생성: 화면에 그려야 할 이미지 파일들의 리스트를 만듭니다.
- 축(axis) 제거: 이미지만 깔끔하게 보이도록 축을 비활성화합니다.
- 반복 처리: 이미지 목록을 순회하면서 같은 축 위에 새 이미지를 다시 그립니다(redraw).
- 일시 정지: 각 이미지가 그려진 후 잠시 멈추어(pause) 사용자가 이미지를 볼 수 있게 합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
images = ['opera.jpg', 'mountain.jpg', '9.jpg']
plt.axis('off')
img = None
for f in images:
im = plt.imread(f)
if img is None:
img = plt.imshow(im)
plt.pause(0.5)
else:
img.set_data(im)
plt.pause(0.5)
plt.draw()코드 설명
위 코드의 핵심 동작 방식은 다음과 같습니다.
plt.rcParams["figure.figsize"]로 그림 크기를 7.50 x 3.50 인치로 설정하고,figure.autolayout을True로 지정해 요소들이 겹치지 않도록 자동 배치합니다.plt.axis('off')를 호출하여 좌표축과 눈금을 숨깁니다.- 첫 번째 이미지는
plt.imshow()로 표시한 후, 반환된 객체를 변수img에 저장합니다. - 이후 이미지부터는
img.set_data(im)를 사용해 기존 이미지 객체의 데이터만 교체함으로써, 매번 새 창을 열지 않고도 성능 저하 없이 빠르게 이미지를 전환할 수 있습니다. plt.pause(0.5)는 0.5초씩 대기하여 각 이미지가 화면에 잠깐 머물게 하며,plt.draw()는 변경된 내용을 즉시 화면에 반영합니다.
실행 결과
코드를 실행하면 준비된 세 개의 이미지(opera.jpg, mountain.jpg, 9.jpg)가 0.5초 간격으로 하나씩 순차적으로 화면에 표시됩니다. 마치 간단한 슬라이드쇼처럼 이미지가 전환되는 것을 확인할 수 있습니다.



참고 사항
이 방식은 애니메이션처럼 연속된 프레임을 보여주는 데 유용하지만, 더 정교한 애니메이션이 필요하다면 Matplotlib의 FuncAnimation 클래스를 사용하는 것이 좋습니다. 또한 plt.pause()는 대화형(interactive) 백엔드에서만 제대로 작동하므로, Jupyter Notebook이나 일반 GUI 창 환경에서 실행하는 것이 좋습니다.