Nous avons vu dans le dernier article comment lire et enregistrer une vidéo.
Dans cet article nous allons voir l’ensemble des propriétés de la fonction get permettant d’obtenir des informations sur le média que nous sommes en train de lire.
Position dans la vidéo
Nous avons trois façons d’afficher la position dans la vidéo en cours de lecture:
- La position en millisecondes: cap.get(cv2.CAP_PROP_POS_MSEC)
- La position en nombre de trames: cap.get(cv2.CAP_PROP_POS_FRAMES)
- La position relative au fichier: cv2.get(cv2.CAP_PROP_POS_AVI_RATIO) retournant une valeur comprise entre 0 (début) et 1 (fin).
Format des trames:
Afin de récupérer les informations en hauteur et en largeur, deux méthodes s’offrent à nous:
- Lire les informations depuis la fonction get():
- en largeur : cap.get(cv2.CAP_PROP_FRAME_WIDTH)
- en hauteur: cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
- Nous pouvons également utiliser la fonction shape de Numpy sur une image de la vidéo:
ret,frame=cap.read() taille=frame.shape
Cette fonction renvoi un tuple (h,w,c) où h correspond à la hauteur, w à la largeur et c au nombre de composante (BGR)
Information sur le média:
Nous pouvons également récupérer un certain nombre d’informations sur le fichier que nous lisons:
- Le nombre de trame par seconde (FPS): cap.get(cv2.CAP_PROP_FPS)
- Le codec de la vidéo (cf article précédent): cap.get(cv2.CAP_PROP_FOURCC)
- Le nombre de trame dans la vidéo: cap.get(cv2.CAP_PROP_FRAME_COUNT)
Voici donc un certain nombre de paramètres permettant d’alléger et d’enlever un certain nombre de variables dans votre code.
Par exemple, le code de la dernière fois:
cap=cv2.VideoCapture("B1.webm") fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('out.avi', fourcc, 25.0, (1280,720))
peut devenir:
cap=cv2.VideoCapture(« B1.webm »)
out = cv2.VideoWriter(‘out.avi’, cap.get(cv2.CAP_PROP_FOURCC),cap.get(cv2.CAP_PROP_FPS), (cap.get(cv2.CAP_PROP_FRAME_WIDTH),cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
Ce qui permet de s’adapter à tous les formats de vidéo d’entrée.