Versuche, die Geschwindigkeit von Zeitraffervideos automatisch anzupassen (Teil 1)
Dies ist eine Fortsetzung des obigen Artikels.
Ich hatte nicht genug Kraft, um Nachforschungen anzustellen, also bewegte ich vorerst meine Hand.
https://youtu.be/BOHDtW9_tlQ
Der Hash-Abstand zwischen den Bildern dieses Zeitraffervideos war wie folgt.
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
Vorerst habe ich die Z-Punktzahl genommen.
z_scores = scipy.stats.zscore(distances)
gaussian blur
Ich habe den z-Wert verwischt und das Minus des Durchschnitts der absoluten Werte als Schwellenwert festgelegt.
blured = cv2.GaussianBlur(z_scores, (49, 49), 0)
threshold = numpy.average(numpy.sqrt(numpy.power(z_scores, 2)))
Eine Sequenz unterhalb des Schwellenwerts in der obigen Abbildung wird als ein Ereignis angesehen. Das Folgende ist die Videowiedergabe mit unterschiedlichen Geschwindigkeiten.
https://youtu.be/iPMuMYygbDg
Es ist nah an dem, was ich vorhatte, Ich dachte, dass es etwas besser wäre, wenn die Geschwindigkeit vor und nach dem als Ereignis erkannten Teil allmählich langsamer oder schneller würde, so dass an der Grenze ein Rand vorhanden wäre.
Diesmal habe ich eine Python-Bibliothek namens "moviepy" verwendet Ich würde gerne herausfordern, wenn ich verstehe, wie man es ein bisschen mehr benutzt.
https://github.com/Zulko/moviepy
Platzieren Sie die Bibliothek, die Sie verwendet haben.
# 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
Klicken Sie hier für den Code. https://github.com/sosuke-k/timelapse-optimizer
Recommended Posts