Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การแสดงลำดับภาพ (Image Sequence) ด้วย Matplotlib

ใช้ plt.imshow() ร่วมกับ plt.pause() เพื่อแสดงภาพต่อเนื่องแบบ Animation โดยไม่ต้องใช้ FuncAnimation

ขั้นตอน

  1. ตั้งค่าขนาด Figure
  2. เตรียมรายการไฟล์ภาพ
  3. ปิด Axis
  4. วนลูปอ่านและแสดงภาพทีละภาพ
  5. ใช้ plt.pause() หน่วงเวลา
  6. ใช้ img.set_data() อัปเดตข้อมูลภาพ

ตัวอย่างโค้ด


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()

วิธีที่ดีกว่า: ใช้ FuncAnimation


import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()
ax.axis('off')
images = ['opera.jpg', 'mountain.jpg', '9.jpg']

def update(frame):
    im = plt.imread(images[frame])
    ax.clear()
    ax.axis('off')
    ax.imshow(im)

ani = animation.FuncAnimation(fig, update, frames=len(images), 
                              interval=500, repeat=True)
plt.show()

ผลลัพธ์

หน้าต่างแสดงภาพ 3 รูป สลับกันทุก 0.5 วินาที แบบ Loop