Tentatives d'ajuster automatiquement la vitesse des vidéos accélérées (partie 1)
Ceci est une continuation de l'article ci-dessus.
Je n'avais pas assez de pouvoir pour enquêter, alors j'ai bougé ma main pour le moment.
https://youtu.be/BOHDtW9_tlQ
La distance de hachage entre les images de cette vidéo time-lapse était comme ça.
clip = moviepy.editor.VideoFileClip("path to video file")
phashs = [imagehash.phash(PIL.Image.fromarray(frame)) for frame in clip.iter_frames()]
distances = [phashs[i+1] - phashs[i] for i in range(len(phashs)-1)]
z score
Pour le moment, j'ai pris le score z.
z_scores = scipy.stats.zscore(distances)
gaussian blur
J'ai brouillé le score z et défini le moins de la moyenne des valeurs absolues comme seuil.
blured = cv2.GaussianBlur(z_scores, (49, 49), 0)
threshold = numpy.average(numpy.sqrt(numpy.power(z_scores, 2)))
Une séquence en dessous du seuil de la figure ci-dessus est considérée comme un événement. Ce qui suit est la lecture vidéo avec différentes vitesses.
https://youtu.be/iPMuMYygbDg
C'est proche de ce que j'avais en tête, Je pensais que ce serait un peu mieux si la vitesse ralentissait progressivement ou devenait plus rapide avant et après la pièce détectée comme événement afin qu'il y ait une marge à la frontière.
J'ai utilisé une bibliothèque python appelée moviepy
cette fois
Je voudrais contester si je comprends comment l'utiliser un peu plus.
https://github.com/Zulko/moviepy
Placez la bibliothèque que vous avez utilisée.
# requirements.txt
ImageHash==3.1
matplotlib==1.3.1
moviepy==0.2.2.11
numpy==1.7.1
Pillow==3.4.2
progressbar2==3.11.0
scipy==0.13.2
seaborn==0.7.1
Cliquez-ici pour le code. https://github.com/sosuke-k/timelapse-optimizer
Recommended Posts