Découpez une image d'une vidéo toutes les secondes avec Python + OpenCV

Au cours de mes études universitaires, j'écris ce que je pensais généralement être utile. Je me réfère à cet article. L'article ci-dessus décrit des méthodes telles que l'extraction de toutes les images de la vidéo, l'extraction des images de $ t_1 $ secondes à $ t_2 $ secondes, mais dans cet article, je présenterai la méthode de découpage toutes les secondes. Je suis.

Objectif

"Je veux analyser la vidéo, mais il est difficile de gérer la vidéo telle quelle?: Confondé:" "Ensuite, si vous le découpez avec un cadre, vous ne pouvez pas revenir à la tâche de l'image?: Open_mouth:" D'après mon expérience personnelle, le but est de découper des images de la vidéo une seconde à la fois.

supposition

La structure de répertoires suivante est supposée.


|── sample.ipynb
|
|── video
|    └── video_sample.mp4
|     
└── frame
     └── video_sample
           |── image_0000.jpg
           ︙
           └── image_00030.jpg

Si la vidéo (video_sample.mp4) est de 30 secondes, on suppose que 31 images à 0 seconde, 1 seconde, ..., 30 secondes seront enregistrées sous frame / video_sample.

Environnement d'exécution

Opencv-python est une bonne référence pour l'installation d'OpenCV.

la mise en oeuvre

Description de l'argument

--video_path: le chemin de la vidéo dont vous souhaitez recadrer l'image --frame_dir: Où enregistrer le cadre

code

sample.ipynb


import cv2
from os import makedirs
from os.path import splitext, dirname, basename, join

def save_frames(video_path: str, frame_dir: str, 
                name="image", ext="jpg"):
    cap = cv2.VideoCapture(video_path)
    if not cap.isOpened():
        return
    v_name = splitext(basename(video_path))[0]
    if frame_dir[-1:] == "\\" or frame_dir[-1:] == "/":
        frame_dir = dirname(frame_dir)
    frame_dir_ = join(frame_dir, v_name)

    makedirs(frame_dir_, exist_ok=True)
    base_path = join(frame_dir_, name)

    idx = 0
    while cap.isOpened():
        idx += 1
        ret, frame = cap.read()
        if ret:
            if cap.get(cv2.CAP_PROP_POS_FRAMES) == 1:  #Enregistrer 0 seconde image
                cv2.imwrite("{}_{}.{}".format(base_path, "0000", ext),
                            frame)
            elif idx < cap.get(cv2.CAP_PROP_FPS):
                continue
            else:  #Enregistrer l'image d'une seconde
                second = int(cap.get(cv2.CAP_PROP_POS_FRAMES)/idx)
                filled_second = str(second).zfill(4)
                cv2.imwrite("{}_{}.{}".format(base_path, filled_second, ext),
                            frame)
                idx = 0
        else:
            break

save_frames(".\\video\\video_sample.mp4", ".\\frame")

Lorsqu'il est exécuté, il est enregistré comme suit. image.png

Conclusion

Il est difficile de gérer les vidéos.

Recommended Posts

Découpez une image d'une vidéo toutes les secondes avec Python + OpenCV
Découpez le visage avec Python + OpenCV
Enregistrer la vidéo image par image avec Python OpenCV
Découpez une image avec python
Détection de visage à partir de plusieurs fichiers image avec openCV, découpez et enregistrez
Rendre OpenCV3 disponible à partir de python3 installé avec pyenv
Lire ligne par ligne à partir d'un fichier avec Python
Binarisation avec OpenCV / Python
Génération d'images JPEG en spécifiant la qualité avec Python + OpenCV
Afficher l'image de la caméra USB avec OpenCV de Python avec Raspeye
Créez facilement des miniatures à partir de dossiers vidéo érotiques avec opencv
"Traitement Apple" avec OpenCV3 + Python3
Reconnaissance faciale en temps réel avec vidéo acquise par getUserMedia [HTML5, openCV]
Ajoutez un faux effet d'inclinaison aux vidéos avec OpenCV + Python
Édition d'image avec python OpenCV
Capture de caméra avec Python + OpenCV
Gestion de vidéos YouTube avec Python 3
[Python] Utilisation d'OpenCV avec Python (basique)
Chargement de la vidéo en boucle avec opencv
J'ai essayé de reconnaître le visage de la vidéo (OpenCV: version python)
Créez un outil d'analyse vidéo simple avec python wxpython + openCV
Découpez JPEG pour le time lapse de la vidéo Theta S
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
Avec skype, notifiez avec skype de python!
Utiliser OpenCV avec Python @Mac
Extraction d'objets dans l'image par correspondance de modèles en utilisant OpenCV avec Python
J'ai essayé de couper une image fixe de la vidéo
Passer la liste de Python vers C ++ par référence dans pybind11
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Briller la vie avec Python et OpenCV
Appeler C depuis Python avec DragonFFI
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Réseau neuronal avec OpenCV 3 et Python 3
Utilisation de Rstan de Python avec PypeR
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Installez Python à partir des sources avec Ansible
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Programmation facile Python + OpenCV avec Canopy
Exécutez Aprili depuis Python sur Orange
Essayez la reconnaissance faciale avec python + OpenCV
Reconnaissance faciale avec caméra avec opencv3 + python2.7
Charger une image gif avec Python + OpenCV
Appelez python de nim avec Nimpy
Trouver la similitude d'image avec Python + OpenCV
Utiliser OpenCV avec Python 3 dans Window
Dessinez une illustration avec Python + OpenCV
Charger fbx depuis python avec cinema4d
Suivre les balles de baseball avec Python + OpenCV
Reconnaissance d'objets avec openCV par traincascade
Dessinez une flèche (vecteur) avec opencv / python
Etude de base d'OpenCV avec Python
Mettez OpenCV dans OS X avec Homebrew et vidéo d'entrée / sortie avec python
Collecter des informations sur Twitter avec Python (API Twitter)
Lecture vidéo avec son sur python !! (tkinter / imageio)
Obtenez des informations sur la propriété en grattant avec python
Recevoir des données textuelles de mysql avec python
Obtenir le code HTML de l'élément avec du sélénium Python
[Note] Obtenir des données de PostgreSQL avec Python
[Python] Détection de visage par OpenCV (Haar Cascade)