Lecture ou acquisition d'une vidéo
Conseil : Utiliser les démonstrations
Il existe plusieurs programmes de démonstration utilisant les vidéos. A partir de ces démonstrations, on peut avoir accès aux lignes de code source et les modifier.
Méthode : Modification de la démonstration
1
// Scilab Computer Vision Module
2
// Copyright (C) 2017 - Scilab Enterprises
3
4
scicv_Init();
5
6
f = scf();
7
toolbar(f.figure_id, "off");
8
demo_viewCode("video_reading.dem.sce");
9
10
videoCapture = new_VideoCapture(getSampleVideo("video.mpg"));
11
12
while is_handle_valid(f)
13
[ret, frame] = VideoCapture_read(videoCapture);
14
if ret then
15
if is_handle_valid(f)
16
matplot(frame);
17
sleep(40);
18
end
19
delete_Mat(frame);
20
else
21
break
22
end
23
end
24
25
delete_VideoCapture(videoCapture);
26
27
if is_handle_valid(f) then
28
close(f);
29
end
30
31
32
On peut sauvegarder le code source dans un autre dossier et le modifier.
Méthode : Accès au signal temporel d'une zone
Nous allons calculer la valeur moyenne , la luminance, d'une zone rectangulaire et mémoriser les valeurs image par image.
y=frame(130:150,300:350); // extraction de la zone 21 lignes et 51 colonnes
n=size(y,1)*size(y,2);yc=double(matrix(y,n,3));// matrice de 1071 lignes (=21*51) et 3 colonnes (R,G,B)
w=[w;mean(yc)] ; // le vecteur w contient la luminance moyenne de la zone rectangulaire
1
scicv_Init();
2
f = scf();
3
toolbar(f.figure_id, "off");
4
videoCapture = new_VideoCapture(getSampleVideo("video.mpg"));
5
w=[];
6
while is_handle_valid(f)
7
[ret, frame] = VideoCapture_read(videoCapture);
8
if ret then
9
if is_handle_valid(f)
10
subplot(2,1,1)
11
matplot(frame(130:150,300:350));
12
subplot(2,1,2)
13
y=frame(130:150,300:350);
14
n=size(y,1)*size(y,2);
15
yc=double(matrix(y,n,3));
16
17
w=[w;mean(yc)];
18
plot(w)
19
sleep(40);
20
end
21
delete_Mat(frame);
22
else
23
break
24
end
25
end
26
delete_VideoCapture(videoCapture);
27
if is_handle_valid(f) then
28
close(f);
29
end
30
31
32

Résultat final