ACQUISITION VIDEO (WEBCAM, TV CARDS ...)

Signaler
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
-
defis91
Messages postés
66
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
8 août 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31585-acquisition-video-webcam-tv-cards

defis91
Messages postés
66
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
8 août 2011

Salut Kenavo,
5 ans après, la mise à disposition de ton composant bien utile, encore une remarque.
A l'époque je l'avais utilisé pour une détection de mouvement qui fonctionnait parfaitement.
Interfacé à un servo moteur, la caméra suivait les déplacements.
Je reprends ce programme pour le lancer à heure fixe et j'ai un petit problème.
Après avoir fait un capture.disconnect on ne peut pas faire un capture.connect sans le déclanchement d'une erreur fatale.
Une idée ?
Merci
Dom EFIS.
sebnet06
Messages postés
2
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
31 mars 2010

Merci Kenavo,
Sa marche impeccable.
cs_Kenavo
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
1
Salut,

Je crois que tu as des erreurs dans la récupération des valeurs U et V

// calcul des indices
n := (H * W) + ((j div 2) * (W div 2) + (i div 2));
m := (H div 2) * (W div 2) + n;

// Lecture des valeurs
U := pointbyte[n];
V := pointbyte[m];

Amuse-toi bien !

Ken@vo
sebnet06
Messages postés
2
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
31 mars 2010

Bonjour,

Merci pour ce composant.
J'aimerai copier l'affichage de ma camera sur un bitmap, mon problème est que elle utilise un format (IYUV et I420) et je ne parvient pas a recuperer les bonnes couleurs.

Je fait parcourir i de 0 à (Bitmap.height -1) et j de 0 à (Bitmap.width -1)
J'utilise un Bitmap de 120*160.

Y := pointbyte[i*160+j];
U := pointbyte[(i div 2)*(160 div 2) +j div 2 +(i*j)];
V := pointbyte[(i div 2)*(160 div 2) +j div 2 +(i*j) +(i*j)div 4];

Ensuite j'utilise la formule de conversion de YUV en RGB :

//Red
R := trunc(1.164*(Y - 16) + 1.596*(V - 128));
if R < 16 then R := 0;
if R > 255 then R := 255;

//Green
G := trunc(1.164*(Y - 16) - 0.813*(V - 128) - 0.391*(U - 128));
if G < 0 then G := 0;
if G > 255 then G := 255;

//Blue
B := trunc(1.164*(Y - 16) + 2.018*(U - 128));
if B < 0 then B := 0;
if B > 255 then B := 255;

et j'affiche sur mon bitmap le resultat :

Image1.Picture.Bitmap.canvas.Pixels[j,i] := RGB(R,G,B);

Je pense que je récupère mal mes composant YUV.
Quelqu'un a t' il la solution a mon problème?

Merci.
cs_krzysiu
Messages postés
23
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
3 septembre 2011

Bonjours,

merci pour ce composant qui fonctionne parfaitement.
J'aurais souhaiter pouvoir récupérer la valeur des couleurs des pixel en RGB dans le flux vidéo, pour pouvoir détecter la présence d'un objet de couleur. Quelqu'un aurait'il un début de piste ? Merci