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)