Capturer une image depuis une webcam

Soyez le premier à donner votre avis sur cette source.

Vue 30 949 fois - Téléchargée 4 775 fois

Description

Bonjour tous le monde, comme je cherchais une source permettant de capturer une image depuis une webcam, et comme je n'ai trouvé qu'une seule source en C#, qui ne faisait pas tout à fait ce que j'attendais j'ai cherché un petit peu sur VBfr et j'ai trouvé une source de manu222 (http://www.vbfrance.com/codes/CAPTURE-IMAGE-DANS-FLUX-VIDEO-WEBCAM_40449.aspx"), qui me semblais la plus adéquate. Ce petit programme est donc une "traduction" en C# auquel j'ai fait quelque rapides modifications.
C'est donc une form C# toute bete, avec 2 PictureBox l'une pour prévisualiser l'image, la deuxième pour afficher l'image capturée. On peux ensuite sauvegarder l'image. Ce code peut être réutilisé pour n'importe quel besoin.
En réalité tout est fait dans les deux dll DirectX.Capture et DShowNET (qui ne sont PAS des dll de Microsoft contrairement a ce que leur nom pourrai évoquer! Même si elles sont très pratique ! :))
Pour conclure un code vraiment simple qui utilise une bibliothèque facile d'accès pour capturer une image depuis une webcam!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

olivierbalagizi
Messages postés
40
Date d'inscription
samedi 19 mars 2005
Statut
Membre
Dernière intervention
10 février 2011

salut.
Un petit problème que je rencontre en utilisant cette source: chaque fois que je lance l'application pour la première fois, tout fonctionne correctement. si j'arrête le programme et le redemarre, je suis obligé de débrancher ma webcam et de la reconnecter sinon un message d'erreur "Values does not fall within the expected range" apparait. Comment corriger ce problème?

merci d'avance
Shad78
Messages postés
10
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
31 juillet 2008

Salut,
j'ai eu ce petit probleme également en changeant de configurations pendant l'execution du programme, c'est pourquoi j'ai verouillé l'acces au combobox une fois les configurations choisies. En revanche je n'ai pas (encore) eu le meme probleme que toi. Alors probleme dans la dll ou dans mon code, je ne sais pas encore, mais je vais regarder ca, merci de ton commentaire.
angel_of_tower
Messages postés
23
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
17 novembre 2007

Bonne source
je m'en suis servis pour faire un détecteur de mouvement
mais l'image est inversé
peut être il y à une solution
si il y a une astuce je suis preneur
merci @+.
cs_sourdingue
Messages postés
1
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
21 février 2008

Je remercie celui qui a fait cela car c'est exactement ce que je voulais... pour un mini executable que j'ai en tête. Ca me facilitera le traitement et recherche image...Merci.
C'est vrai que l'image est inversée (simple capture d'image) mais dans mon cas cela ne me gène pas.
Le source marche très bien avec moi: je n'ai pas eu de soucis d'image comme avec d'autres sources récupéré sur des projets de cours.

Merci. @+
econs
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
19
Pour ceux qui voudraient inverser l'image, voici une solution :

J'ai modifié la méthode ci-dessous :

void CaptureInfo_FrameCaptureComplete(PictureBox Frame)
{

Graphics g = Graphics.FromImage(pictureBox2.Image);

Matrix mm1 = new Matrix();
mm1 = new Matrix(-1, 0, 0, -1, 0, 0);

GraphicsPath gp = new GraphicsPath();

Image imgpic = (Image)Frame.Image.Clone();
mm1.Translate(imgpic.Width, imgpic.Height, MatrixOrder.Append);

gp.AddPolygon(new Point[] { new Point(0, imgpic.Height), new Point(imgpic.Width, imgpic.Height), new Point(0, 0) });
gp.Transform(mm1);

PointF[] pts = gp.PathPoints;
g.DrawImage(imgpic, pts);

pictureBox2.Refresh();

}

avec les using qui vont bien :

using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

Quelques explications ici :
http://www.codeproject.com/KB/GDI-plus/matrix_transformation.aspx
http://msdn2.microsoft.com/en-us/library/8667dchf.aspx

L'image est tout d'abord inversée horizontalement, puis translatée en X et en Y.

--> A noter (petit défaut pour l'instant), que pictureBox1.Image et pictureBox2.Image ne doivent pas être null en démarrant la procédure, sinon, badaboum. Mais çà s'arrange très facilement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.