以下这个代码循环播放gif,按q可以退出
from PIL import Image
import cv2
import numpy as np
# 打开GIF图片
gif_path = "example.gif" # GIF路径
gif = Image.open(gif_path)
# 获取GIF的帧数
frames = []
try:
while True:
frame = gif.copy()
frames.append(frame)
gif.seek(gif.tell() + 1)
except EOFError:
pass
# 获取延迟时间(以毫秒为单位)
duration = gif.info['duration']
# 循环播放GIF动画
while True:
for frame in frames:
# 将Pillow的图像转换为NumPy数组
frame = frame.convert('RGB')
frame_np = np.array(frame)
# 转换颜色通道顺序
frame_np = cv2.cvtColor(frame_np, cv2.COLOR_RGB2BGR)
# 显示帧
cv2.imshow('GIF', frame_np)
# 延迟时间,单位为毫秒
if cv2.waitKey(duration) & 0xFF == ord('q'):
cv2.destroyAllWindows()
exit(0)