C'est complètement un mémo. .. J'ai l'impression de l'utiliser souvent (?)
from skvideo.io import vread
gif = vread("sample.gif")
# print(gif.shape) # => (Exemple): (21, 600, 600, 3)
――Mais c'est lent, donc je pense que ↓ c'est mieux
--Vite
import cv2
import numpy as np
# faster than `vread` in `skvideo.io`
def vread(path, T=30):
    cap = cv2.VideoCapture(path)
    gif = [cap.read()[1][:,:,::-1] for i in range(T)]
    gif = np.array(gif)
    cap.release()
    return gif
gif = vread("sample.gif", T=21)
# print(gif.shape) # => (Exemple): (21, 600, 600, 3)
――Le seul inconvénient est que vous devez indiquer le nombre d'images.
import cv2
filepath = "data/raw/GH010005-0.mp4"
cap = cv2.VideoCapture(filepath)
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret:
        cv2.imshow("Frame", frame)
        cv2.waitKey(1)
    else:
        cap.release()
cv2.destroyAllWindows()
import cv2
cv2.namedWindow("frame", cv2.WINDOW_NORMAL)
for t in range(len(gif)):
    cv2.imshow("frame", gif[t])
    cv2.waitKey(50) #Il ne s'affichera que si vous attendez un moment
cv2.destroyAllWindows()

import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(21,9))
for t in range(21):
    plt.subplot(3,7,t+1)
    plt.imshow(gif[t])
plt.show()

import moviepy.editor as mpy
def npy_to_gif(npy, filename):
    clip = mpy.ImageSequenceClip(list(npy), fps=10)
    clip.write_gif(filename)
--OpenCV gagne!

(Gif emprunté ici https://miro.medium.com/max/1200/1*LnQ5sRu-tJmlvRWmDsdSvw.gif)