Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib를 활용해 이미지 시퀀스를 순차적으로 표시하는 방법

데이터 시각화 작업을 하다 보면 여러 장의 이미지를 하나씩 차례대로 화면에 띄워야 하는 경우가 있습니다. 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.autolayoutTrue로 지정해 요소들이 겹치지 않도록 자동 배치합니다.
  • 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를 활용해 이미지 시퀀스를 순차적으로 표시하는 방법

Matplotlib를 활용해 이미지 시퀀스를 순차적으로 표시하는 방법

Matplotlib를 활용해 이미지 시퀀스를 순차적으로 표시하는 방법

참고 사항

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