Comme je l'ai expliqué en détail dans ce tutoriel de blog sur la façon de créer ce projet avec des explications et des échantillons de code.
Répertoire des fichiers vidéo | Répertoire d'images extrait |
---|---|
![]() | ![]() |
Itérer sur toutes les vidéos dans un répertoire | Extraire les cadres (après personnalisation (intervalle souhaité (en secondes) entre les cadres extraits, commencez après (secondes souhaitées) etc.) |
L'extracteur de trame vidéo est un script Python qui vous permet d'extraire des trames itératives sur tous les fichiers vidéo à partir d'un répertoire et de les enregistrer sous forme de fichiers d'image individuels dans deux répertoires différents: un pour les cadres de taille d'origine et un pour les cadres redimensionnés. Le script utilise des packages OpenCV et IMUTILS Python pour le traitement d'image et le package Python Fire pour une interface de ligne de commande simplifiée.
Ce script vous permet d'extraire des trames des vidéos à un rythme spécifié. En spécifiant l'intervalle souhaité (en secondes) entre les trames extraites, vous pouvez rapidement générer un grand ensemble de données d'images pour la détection d'objets, la classification des images ou d'autres tâches de vision par ordinateur.
Pour l'annotation de l'image, il est souvent nécessaire d'extraire les cadres des vidéos. Cette application facilite la génération d'un grand ensemble de données d'images pour la formation de détection d'objets ou de classification d'images, même si vos données se présentent initialement sous la forme de vidéos.
En automatisant le processus d'extraction de trame pour itération sur tous les fichiers vidéo dans un répertoire, cette application vous fait gagner du temps et des efforts par rapport à l'extraction manuelle des trames de chaque fichier vidéo.
J'espère que vous trouverez l'extracteur de trame vidéo utile pour vos projets de vision par ordinateur!
Pour utiliser l'extracteur de trame vidéo, vous devez exécuter le script python frame_extractor.py
avec les arguments suivants:
vid_dir
: le chemin d'accès au répertoire contenant le (s) fichier (s) vidéo à partir de laquelle vous souhaitez extraire des trames.out_dir
: le chemin du répertoire où vous souhaitez enregistrer les trames extraites.img_frmt
(Facultatif): Le format d'image pour enregistrer les trames extraites. Par défaut est JPG .required_frame_rate
(facultatif): le nombre de trames à extraire par seconde. La valeur par défaut est 1 .start_from_seconds
(facultatif): le nombre de secondes à partir desquels commencer à extraire les trames. La valeur par défaut est 0 .L'application extrait les trames de toutes les vidéos du répertoire spécifié et les enregistrera dans le répertoire de sortie.
Au lieu de passer les arguments à chaque fois que vous exécutez cette application, vous pouvez ajouter ces arguments dans le fichier Settings.py. paramètres
python frame_extractor_multithread.py
Pour utiliser l'extracteur de trame vidéo, vous devez installer Python 3 et les packages Python suivants:
Vous pouvez installer ces packages à l'aide de PIP, en exécutant la commande suivante dans votre terminal:
pip install opencv-python imutils fire
python frame_extractor . py - - help
python frame_extractor . py - - vid_dir = [ vid_dir ] - - out_dir = [ out_dir ] - - img_frmt = [ img_frmt ] - - required_frame_rate = [ required_frame_rate ] - - start_from_seconds = [ start_from_seconds ]
Le processus d'extraction pour toutes les vidéos du vid_dir
commencera et les trames extraites seront enregistrées sur l' out_dir
Supposons que vous ayez un fichier vidéo appelé my_video.mp4 situé dans le répertoire / path / vers / vidéo, et que vous souhaitez en extraire des trames et les enregistrer dans le répertoire / path / to / / output, avec une fréquence d'images de 2 images par trame par deuxième et à partir de 10 secondes dans la vidéo. Vous pouvez exécuter la commande suivante:
python frame_extractor . py - - vid_dir = / path / to / video - - out_dir = / path / to / output - - required_frame_rate = 2 - - start_from_seconds = 10
Le script extrait les trames de my_video.mp4, enregistrera les trames de taille d'origine dans / path / vers / output / orig_size_frames répertoire et les cadres redimensionnés dans / path / to / output / re_size_frames répertoire. Les cadres extraits seront enregistrés au format JPEG, avec un nom de fichier du formulaire my_video_1.jpg, my_video_2.jpg, etc.
Alternativement, vous pouvez modifier le fichier Settings.py et le frame_extractor.py
acceptera les arguments d'ici.
Par exemple:
Modifier les paramètres requis dans les settings.py
# If you don't want to pass too many arguments every time you can modify the settings here.
# And the script will accept the setting from this file every time you run
# 'python extract_frames.py'
# Video file
VIDEO_DIRPATH = ROOT / 'videos' # EDIT: 1 (Required)
# Frame settings
REQUIRED_FRAME_RATE = 2 # EDIT: 2
# Number of seconds for a frame. For example: 0.5 means, 1 frame after 0.5 seconds pass
START_FROM_SECOND = 1 # EDIT: 3
# For example: 2 means, start extraction of the frames after 2 seconds of the video is passed.
REQUIRED_IMAGE_FORMAT = 'jpg' # EDIT: 4
REQUIRED_IMAGE_WIDTH = 720 # EDIT: 5
# Output frames dirpath
OUTDIR = BASE_ROOT / 'skyscraper' # EDIT: 6 (Required)
Si vous trouvez mon code Python utile, pensez à lui donner une étoile.
Pour tout problème avec l'application ou avoir des commentaires ou des suggestions d'amélioration. Veuillez soulever un problème
L'extracteur de trame vidéo est sous licence sous la licence MIT. Voir le fichier de licence pour plus de détails.