- Delphi / Pascal : Acquisition video (webcam, tv cards ...) - CodeS SourceS
- Visual Basic / VB.NET : Capturer video (webcam, tv etc.....) - CodeS SourceS
- Boite de dialogue choix source vidéo (webcam n°1, n°2, carte entrée vidéo, TV...
- C / C++ / C++.NET : Enregistremen video webcam
- C / C++ / C++.NET : Classe pour capture image (video) avec webcam usb (utilisant vfw.h) - CodeS Sou
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.
Sa marche impeccable.
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
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.