Lecture ou acquisition d'une vidéo

ConseilAffichage d'une vidéo

Pour afficher une vidéo, il faut utiliser un programme python contenant une boucle

1
import numpy as np
2
import cv2 as cv
3
4
v = cv.VideoCapture(r'video_ts.MP4')
5
fps = v.get(cv.CAP_PROP_FPS)
6
if not v.isOpened():
7
    print('verifier le chemin')
8
    exit(0)
9
print('Lecture de la video')
10
lecture = True
11
nb_images = 0
12
while lecture:
13
    ret, img = v.read()
14
    if not ret:
15
        print('Fin de lecture')
16
        lecture = ret
17
    else:
18
        cv.imshow('video',img)
19
        cv.waitKey(int(1 / fps * 1000))
20
cv.destroyAllWindows()	   
21

MéthodeAccè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.

1
import numpy as np
2
from matplotlib import pyplot as plt
3
import cv2 as cv
4
5
v = cv.VideoCapture(r'C:\Users\Laurent\video_ts.MP4')
6
if not v.isOpened():
7
    print('verifier le chemin')
8
    exit(0)
9
fps = v.get(cv.CAP_PROP_FPS)
10
nb_images = v.get(cv.CAP_PROP_FRAME_COUNT)
11
print('Lecture de la video')
12
lecture = True
13
m = []
14
t = []
15
i = 0
16
plt.axis([0, nb_images / fps, 0, 255])
17
while lecture:
18
    ret, img = v.read()
19
    if not ret:
20
        print('Fin de lecture')
21
        lecture = ret
22
    else:
23
        plt.scatter(i / fps, np.mean(img[:, :, 0]), color='b')
24
        plt.scatter(i / fps, np.mean(img[:, :, 1]), color='g')
25
        plt.scatter(i / fps, np.mean(img[:, :, 2]), color='r')
26
        plt.pause(0.01)
27
        cv.imshow('video',img)
28
        cv.waitKey(int(1 / fps * 1000))
29
        i = i + 1
30
cv.destroyAllWindows()	
31
plt.show()   
32
33
34
35

MéthodeAccè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.

1
import numpy as np
2
from matplotlib import pyplot as plt
3
import cv2 as cv
4
5
v = cv.VideoCapture(r'C:\Users\Laurent\video_ts.MP4')
6
if not v.isOpened():
7
    print('verifier le chemin')
8
    exit(0)
9
fps = v.get(cv.CAP_PROP_FPS)
10
nb_images = v.get(cv.CAP_PROP_FRAME_COUNT)
11
print('Lecture de la video')
12
lecture = True
13
i = 0
14
plt.axis([0, nb_images / fps, 0, 255])
15
while lecture:
16
    ret, img = v.read()
17
    if not ret:
18
        print('Fin de lecture')
19
        lecture = ret
20
    else:
21
        x = img[240:300, 400:490]
22
        plt.scatter(i / fps, np.mean(x[:, :, 0]), color='b')
23
        plt.scatter(i / fps, np.mean(x[:, :, 1]), color='g')
24
        plt.scatter(i / fps, np.mean(x[:, :, 2]), color='r')
25
        plt.pause(0.01)
26
        cv.imshow('video',img)
27
        cv.waitKey(int(1 / fps * 1000))
28
        i = i + 1
29
cv.destroyAllWindows()	
30
plt.show()   
31
32
33
34