Bienvenue dans ce laboratoire (lab) sur la prise en main des vidéos avec OpenCV-Python! OpenCV (Open Source Computer Vision) est une bibliothèque puissante conçue pour le traitement d'images, l'apprentissage automatique (machine learning) et les applications de vision par ordinateur (computer vision). Dans ce laboratoire (lab), nous allons nous concentrer sur la manipulation des vidéos avec OpenCV-Python.
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
opencv(("OpenCV")) -.-> opencv/BasicOperationsGroup(["Basic Operations"])
opencv/BasicOperationsGroup -.-> opencv/fourcc("VideoWriter Fourcc")
opencv/BasicOperationsGroup -.-> opencv/imread("Image Read")
opencv/BasicOperationsGroup -.-> opencv/imwrite("Image Write")
opencv/BasicOperationsGroup -.-> opencv/video_capture("VideoCapture")
opencv/BasicOperationsGroup -.-> opencv/video_writer("VideoWriter")
subgraph Lab Skills
opencv/fourcc -.-> lab-14766{{"Prise en main des vidéos"}}
opencv/imread -.-> lab-14766{{"Prise en main des vidéos"}}
opencv/imwrite -.-> lab-14766{{"Prise en main des vidéos"}}
opencv/video_capture -.-> lab-14766{{"Prise en main des vidéos"}}
opencv/video_writer -.-> lab-14766{{"Prise en main des vidéos"}}
end
Lecture d'une vidéo et sauvegarde d'une image
Pour capturer une vidéo, vous devez créer un objet VideoCapture. Voici un exemple de lecture d'une vidéo et de sauvegarde de chaque image dans le dossier frame :
Chemin de la vidéo : /home/labex/project/video.mp4
Chemin du fichier : /home/labex/project/read_video.py
Ouvrez le fichier read_video.py. Ensuite, saisissez le code suivant.
import cv2
import os
## Vérifiez si le dossier 'frame' existe. Créez - le s'il n'existe pas.
folder = os.path.exists('frame')
if not folder:
os.makedirs('frame')
print('Nouveau dossier...')
print('OK')
else:
print('Ce dossier existe déjà!')
## Numéro de l'image
number = 0
## Créez un objet VideoCapture
cap = cv2.VideoCapture('video.mp4')
while True:
## Lisez une image de la vidéo
ret, frame = cap.read()
## Incrémentez le numéro de l'image
number = number + 1
if ret:
## Sauvegardez l'image
cv2.imwrite(f"./frame/save{number}.jpg", frame)
## Quittez la boucle
else:
break
print('Chaque image a été sauvegardée dans le dossier frame')
print('Vidéo lue avec succès!')
## Libérez l'objet VideoCapture
cap.release()
Dans cet exemple, nous créons un objet VideoCapture en passant le chemin du fichier vidéo que nous voulons lire. Ensuite, nous utilisons une boucle while pour lire chaque image de la vidéo à l'aide de la méthode read(). Si l'image est lue avec succès, nous utilisons la méthode imwrite() pour sauvegarder l'image. Enfin, nous libérons l'objet VideoCapture.
Vous pouvez exécuter la commande suivante dans le terminal pour exécuter le script.
python /home/labex/project/read_video.py
Ou vous pouvez simplement cliquer sur le bouton comme celui - ci dans le coin supérieur droit pour exécuter le script.
Ensuite, attendez que le terminal affiche "Vidéo lue avec succès!" et vous verrez les images de chaque image dans le dossier frame.
Écriture et sauvegarde d'une vidéo
Pour écrire et sauvegarder une vidéo, vous devez créer un objet VideoWriter. Voici un exemple de comment écrire et sauvegarder une vidéo :
Chemin de la vidéo : /home/labex/project/video.mp4
Chemin du fichier : /home/labex/project/write_video.py
Ouvrez le fichier write_video.py. Ensuite, saisissez le code suivant.
import cv2
## Créez un objet VideoCapture
cap = cv2.VideoCapture('video.mp4')
## Obtenez la taille des images de la vidéo et le taux de trames
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
## Créez un objet VideoWriter
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height))
while True:
## Lisez une image de la vidéo
ret, frame = cap.read()
if ret:
## Traitez l'image
#...
## Écrivez l'image traitée dans la vidéo de sortie
out.write(frame)
else:
break
print('Vidéo sauvegardée avec succès!')
## Libérez les objets VideoCapture et VideoWriter
cap.release()
out.release()
Dans cet exemple, nous créons un objet VideoCapture en passant le chemin du fichier vidéo à lire. Ensuite, nous obtenons la taille des images de la vidéo et le taux de trames à l'aide de la méthode get(). Ensuite, nous créons un objet VideoWriter en passant le nom du fichier de sortie, le code fourcc, le taux de trames et la taille des images. Le code fourcc est un code sur quatre octets utilisé pour spécifier le codec vidéo. Dans cet exemple, nous utilisons le codec XVID.
Nous utilisons ensuite une boucle while pour lire chaque image de la vidéo à l'aide de la méthode read(). Si l'image est lue avec succès, nous la traitons (par exemple, en appliquant des filtres) et l'écrivons dans la vidéo de sortie à l'aide de la méthode write() de l'objet VideoWriter. Enfin, nous libérons les objets VideoCapture et VideoWriter.
Vous pouvez exécuter la commande suivante dans le terminal pour exécuter le script.
python /home/labex/project/write_video.py
Ou vous pouvez simplement cliquer sur le bouton comme celui - ci dans le coin supérieur droit pour exécuter le script.
Ensuite, attendez que le terminal affiche "Vidéo sauvegardée avec succès!" et vous verrez une vidéo de sortie appelée output.avi dans le dossier du projet. Cependant, l'environnement actuel ne prend pas en charge la visualisation des fichiers vidéo. Vous devrez télécharger le fichier localement, comme indiqué ci - dessous, puis le visionner à l'aide du lecteur vidéo.
Download Video File
Résumé
Félicitations! Vous savez maintenant lire, afficher, écrire et sauvegarder des vidéos en utilisant OpenCV-Python. Grâce à ces compétences de base, vous pouvez commencer à explorer des techniques et applications de vision par ordinateur (computer vision) plus avancées.
N'hésitez pas à développer ce tutoriel en essayant différents formats de vidéo, en appliquant des filtres aux images ou en expérimentant le suivi et la détection d'objets. Les possibilités sont infinies!
We use cookies for a number of reasons, such as keeping the website reliable and secure, to improve your experience on our website and to see how you interact with it. By accepting, you agree to our use of such cookies. Privacy Policy