ใช้ plt.imshow() ร่วมกับ plt.pause() เพื่อแสดงภาพต่อเนื่องแบบ Animation โดยไม่ต้องใช้ FuncAnimation
ขั้นตอน
- ตั้งค่าขนาด Figure
- เตรียมรายการไฟล์ภาพ
- ปิด Axis
- วนลูปอ่านและแสดงภาพทีละภาพ
- ใช้
plt.pause()หน่วงเวลา - ใช้
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