Categories: BaseOpenCVTutoriel

Lire les informations de votre vidéo

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.

Florent

Recent Posts

Conduite autonome : comment détecter les lignes d’une route

Détecter les voies de circulation est une étape incontournable pour la réalisation d’un système de…

2 jours ago

Capturer une image avec la caméra du Raspberry

Dans cet article, nous allons voir comment capturer simplement une image grâce au module raspicam…

4 mois ago

Détecter les repères faciaux (facial landmarks) avec Dlib

Aujourd’hui nous allons utiliser Dlib et OpenCV pour détecter les repères faciaux (facial landmarks) dans…

2 ans ago

Reconnaissance d’objets en temps réel avec MobileNet

Nous avons vu dans un précédent article comment utiliser l’algorithme MobileNetSSD pour la reconnaissance d’objet…

2 ans ago

Reconnaissance d’objet avec MobileNet et OpenCV

Dans cet article, nous nous intéressons à l’utilisation des réseaux de neurones convolutifs dans le…

2 ans ago

Où est Charlie ?

Derrière ce titre un peu trompeur, nous n’allons pas trouver Charlie dans une image, mais…

2 ans ago