Nous avons vu, la dernière fois, comment générer des effets de mouvement sur des vidéos déjà enregistrées. Dans l’article d’aujourd’hui, nous allons voir comment enregistrer un time-lapse grâce à OpenCV. Un time-lapse est un effet vidéo consistant à filmer un sujet en mouvement en diminuant la fréquence d’acquisition, afin que le mouvement du sujet soit accéléré lors de la visualisation.

Commençons par rassembler le matériel nécessaire. Nous aurons tout d’abord besoin d’une machine avec OpenCV. Il peut s’agir de n’importe quel ordinateur que ce soit un ordinateur portable ou une Raspberry. Nous aurons également besoin d’une caméra (module caméra pour Raspberry ou une webcam). Nous avons tout ce qu’il nous faut ? Nous pouvons commencer.

Réalisation du Time-Lapse.

La première étape consiste à importer les librairies et à ouvrir le flux vidéo de la caméra. Nous aurons évidemment besoin pour ce programme d’OpenCV (ligne 1) ainsi que de la bibliothèque time (ligne 2) permettant de gérer, comme son nom l’indiqué, le temps. Nous déclarons également que nous utilisons la caméra (ligne 5) en indiquant l’index 0. Il est possible que cet index soit le 1 en fonction de votre matériel. Enfin, nous déclarons notre fichier de sortie (ligne 9) nommé output.avi utilisant le codec XVID (ligne 8), avec 25 trames par seconde et de la taille de la vidéo d’entrée.
import cv2
import time

# Ouverture de la caméra
cap=cv2.VideoCapture(0)

#fichier d'enregistrement
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 25, (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))))
Nous pouvons maintenant définir les paramètres de notre time-lapse. Commençons par définir la durée que nous voulons enregistrer (ligne 12): 600 secondes, soit 10 minutes. Ainsi que le nombre de secondes entre deux images successives (ligne 13): nous prenons une image toutes les secondes.
#Paramètres du time-lapse
temps=600   # en seconde
intervalle=1	# temps en seconde entre 2 prise de vues
Nous pouvons donc maintenant passer à l’étape la plus importante : la génération du time-lapse. Nous commençons donc par enregistrer la date de début de l’enregistrement du time-lapse (ligne 15). Ainsi, nous pouvons créer une boucle (ligne 16) qui s’arrêtera lorsque nous atteignions le temps défini précédemment. À chaque itération, nous récupérons une image (ligne 17), nous l’enregistrons (ligne 18) et nous patientons 1 seconde (ligne 19), laps de temps que nous avons défini dans la variable intervalle. Enfin, à la fin de l’enregistrement, nous fermons la caméra (ligne 21) et le fichier enregistré (ligne 22).
start=time.time()
while(time.time()<start+temps):
    ret,frame=cap.read()
    out.write(frame)
    time.sleep(intervalle)

cap.release()
out.release()

Résultat

Et voilà, notre time-lapse est enregistré. Voici le résultat que j’ai obtenu. Comme vous pouvez le constater, la mise au point est automatiquement effectuée de temps en temps par la caméra.   N’hésitez pas à partager vos time-lapse sur le forum.
Catégories : video processing

0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.