Lecture ou acquisition d'une vidéo
Conseil : Affichage d'une vidéo
Pour afficher une vidéo, il faut utiliser un programme python contenant une boucle
import numpy as np
import cv2 as cv
v = cv.VideoCapture(r'video_ts.MP4')
fps = v.get(cv.CAP_PROP_FPS)
if not v.isOpened():
print('verifier le chemin')
exit(0)
print('Lecture de la video')
lecture = True
nb_images = 0
while lecture:
ret, img = v.read()
if not ret:
print('Fin de lecture')
lecture = ret
else:
cv.imshow('video',img)
cv.waitKey(int(1 / fps * 1000))
cv.destroyAllWindows()
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Méthode : Accès au signal temporel : moyenne des composantes bleu, vert et rouge
Dans cet exemple, nous allons calculer la valeur moyenne de chaque plan couleur et tracer le graphique de ces valeurs au fur et à la mesure de la lecture de la vidéo.
import numpy as np
from matplotlib import pyplot as plt
import cv2 as cv
v = cv.VideoCapture(r'C:\Users\Laurent\video_ts.MP4')
if not v.isOpened():
print('verifier le chemin')
exit(0)
fps = v.get(cv.CAP_PROP_FPS)
nb_images = v.get(cv.CAP_PROP_FRAME_COUNT)
print('Lecture de la video')
lecture = True
m = []
t = []
i = 0
plt.axis([0, nb_images / fps, 0, 255])
while lecture:
ret, img = v.read()
if not ret:
print('Fin de lecture')
lecture = ret
else:
plt.scatter(i / fps, np.mean(img[:, :, 0]), color='b')
plt.scatter(i / fps, np.mean(img[:, :, 1]), color='g')
plt.scatter(i / fps, np.mean(img[:, :, 2]), color='r')
plt.pause(0.01)
cv.imshow('video',img)
cv.waitKey(int(1 / fps * 1000))
i = i + 1
cv.destroyAllWindows()
plt.show()
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Méthode : Accès au signal temporel : moyenne des composantes bleu, vert et rouge sur une zone
Dans cet exemple, nous allons calculer la valeur moyenne des valeurs des pixels contenus dans un rectangle de chaque plan couleur et tracer le graphique de ces valeurs au fur et à la mesure de la lecture de la vidéo.
La zone est un rectangle (400,240,90,60) où (400,240) sont les coordonnées du coin supérieur gauche (x=400,y=240) et 90,60 la largeur et la hauteur du rectangle. Le coin supérieur gauche est donc en colonne 400 et en ligne 240.
import numpy as np
from matplotlib import pyplot as plt
import cv2 as cv
v = cv.VideoCapture(r'C:\Users\Laurent\video_ts.MP4')
if not v.isOpened():
print('verifier le chemin')
exit(0)
fps = v.get(cv.CAP_PROP_FPS)
nb_images = v.get(cv.CAP_PROP_FRAME_COUNT)
print('Lecture de la video')
lecture = True
i = 0
plt.axis([0, nb_images / fps, 0, 255])
while lecture:
ret, img = v.read()
if not ret:
print('Fin de lecture')
lecture = ret
else:
x = img[240:300, 400:490]
plt.scatter(i / fps, np.mean(x[:, :, 0]), color='b')
plt.scatter(i / fps, np.mean(x[:, :, 1]), color='g')
plt.scatter(i / fps, np.mean(x[:, :, 2]), color='r')
plt.pause(0.01)
cv.imshow('video',img)
cv.waitKey(int(1 / fps * 1000))
i = i + 1
cv.destroyAllWindows()
plt.show()