Prendre une photo automatiquement à l'aide d'une webcam en C# à l'aide de WIA

Je suis en utilisant WIALib pour accéder à ma webcam. Le code je suis en développement est assez simple: lorsqu'un bouton est appuyé, une webcam photo est prise, et ensuite affichée dans une zone de l'image.

Je peux déjà prendre des photos avec ma webcam, mais il n'est pas encore entièrement automatisé. Le seul moyen que j'ai trouvé pour récupérer les images prises par la webcam, est l'utilisation de ce:

wiaPics = wiaRoot.GetItemsFromUI( WiaFlag.SingleImage, WiaIntent.ImageTypeColor ) as CollectionClass;

Mais cela demande à l'utilisateur de sélectionner l'image. Et je veux toujours la dernière photo prise. Je suis donc d'essayer cette façon:

string imageFileName = Path.GetTempFileName(); //create temporary file for image

wiaItem = wiaRoot.TakePicture(); //take a picture

Cursor.Current = Cursors.WaitCursor; //could take some time

this.Refresh();

wiaItem.Transfer(imageFileName, false); //transfer picture to our temporary file

pictureBox1.Image = Image.FromFile(imageFileName); //create Image instance from file

Marshal.ReleaseComObject(wiaItem);

Mais la méthode TakePicture() renvoie la valeur null, et donc je ne peux pas transférer l'image. La chose la plus étrange c'est que la photo a vraiment été prise après la méthode TakePicture() a été appelée, car si je vais à la webcam manuellement la photo est là! Je ne vois pas pourquoi il ne retourne pas une valeur.

Pour résumer, j'ai besoin d'un de ces deux:
1. Obtenir TakePicture() pour travailler en renvoyant une valeur que je peux utiliser.
2. Accéder à la liste de la webcam automatiquement les photos, afin que je puisse récupérer la dernière photo prise.

Meilleures salutations et merci pour l'aide, Micael.

OriginalL'auteur Micael | 2010-11-29