[PYTHON] Découpez JPEG pour le time lapse de la vidéo Theta S

Objectif

Enregistre JPEG pour chaque image spécifiée de la vidéo prise avec Theta S. (Il est normal de tourner une vidéo, mais il est assez difficile de tout voir en temps réel, donc je fais une vidéo time-lapse en version raccourcie.)

De plus, si vous accélérez la découpe jpeg ci-dessous avec Theta + App, ce sera une vidéo qui peut être étouffée. L'application Theta + semble être capable de créer des vidéos time-lapse jusqu'à 300 JPEG seulement, donc si c'est plus que cela, [Lapse It Time Lapse Pro App](https://play.google.com/store/apps/details?id=com .ui.LapseItPro).

Site de référence

Je n'ai pas les compétences pour écrire depuis le début, j'ai donc emprunté à divers endroits ^^; Merci.

  1. Installez OpenCV3.0 dans l'environnement Python3.0 http://retrofocus28.blogspot.jp/2015/08/python3-opencv3windows.html
  2. Importez des fichiers vidéo avec OpenCV3.0 http://derivecv.tumblr.com/post/73561473978

Comment utiliser

python mp42jpg.py MP4FileName [FrameInterval] FrameInterval spécifie le nombre d'images à enregistrer au format JPEG. La valeur par défaut est 120 (la vidéo ThetaS est d'environ 15 ips, donc 15 ips x toutes les 8 secondes) chaque image.

La source

mp42jpg.py


import cv2
import os.path
import sys

interval = 120  #about 15fps*8sec

if len(sys.argv) >= 2 and len(sys.argv) <= 3:
    filename = sys.argv[1]
    if len(sys.argv)==3:
        interval = int(sys.argv[2] )
else:
    print('Usage: python %s mp4_filename [frame_interval]' % sys.argv[0])
    quit()

cap = cv2.VideoCapture(filename)
max_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT)
file_basename, ext = os.path.splitext(filename)
ret = cap.grab()

while(ret):
    frame_count = cap.get(cv2.CAP_PROP_POS_FRAMES)
#    ret, frame = cap.read()
    ret, frame = cap.retrieve()
    
    if ret :

        #cv2.imshow('frame',frame)
        print("frame count:%d" % frame_count)
        cv2.imwrite('%s_%d.jpg' % (file_basename,frame_count),frame)
        if (frame_count + interval ) > max_frames:
            break;
        cap.set(cv2.CAP_PROP_POS_FRAMES,frame_count+interval)
        
#        if cv2.waitKey(1) & 0xFF == ord('q'):
#            break

cap.release()
#cv2.destroyAllWindows()

Si vous exécutez imshow avec le commentaire ci-dessus, il sera affiché dans Window.

Recommended Posts

Découpez JPEG pour le time lapse de la vidéo Theta S
Découpez une image d'une vidéo toutes les secondes avec Python + OpenCV
J'ai essayé de couper une image fixe de la vidéo