C# de capturer des images à partir d'une webcam
Deux derniers jours, j'ai été à la recherche d'un moyen de capturer une image à partir de la webcam à l'aide de C#. Je suis assez nouveau en c# et je NE veux PAS avoir recours à des tiers libs, donc j'ai trouvé deux belles façons, mais les deux semble revenir, presque la même erreur. Je ne pouvais pas obtenir l'un d'eux de travailler, de sorte qu'il serait vraiment sympa si vous m'aider à obtenir l'un d'entre eux en cours d'exécution ou m'aider à trouver une solution de rechange.
La première manière que j'ai trouvé est à l'aide de Windows WIA. J'ai trouvé le code suivant:
CommonDialogClass dialog = new CommonDialogClass();
Device camera = dialog.ShowSelectDevice(WiaDeviceType.CameraDeviceType, true, false);
//take the photo
Item item = camera.ExecuteCommand(CommandID.wiaCommandTakePicture);
ImageFile image = (ImageFile)item.Transfer(FormatID.wiaFormatJPEG);
//filename and saving
image.SaveFile("Test.jpg");
ce code semble être exactement ce que je cherche, mais je ne peux pas essayer de le faire fonctionner, parce que je reçois l'erreur suivante s'affiche sur la deuxième ligne:
Exception from HRESULT: 0x80210015
La deuxième façon que j'ai trouvée est d'utiliser le Avicap32.dll avec l'exemple suivant:
http://www.timvw.be/wp-content/code/csharp/testavicap32.zip
mais je suis arriver sur ce code:
Image image = ((CaptureDevice)cboDevices.SelectedItem).Capture();
image.Save(@"c:\capture.png", ImageFormat.Png);
l'exception suivante:
NullReferenceException:
La référence d'objet n'est pas définie à une instance d'un objet.
Je pense que les deux solutions sont à l'origine des problèmes parce qu'ils ne peuvent pas trouver mon appareil photo, mais je peux utiliser ma caméra skype sans aucun problème.
OriginalL'auteur Viktor Kirilov | 2013-02-03
Vous devez vous connecter pour publier un commentaire.
0x80210015
estWIA_S_NO_DEVICE_AVAILABLE
Api pour travailler avec des caméras web sont:
Les deux sont des Api natives et vous pourriez avoir du mal à l'interface directement à partir de code C#, cependant, avec DirectShow.NET (surtout) et des Médias Foundation.NET vous avez des wrappers pour le code managé. Vous pouvez en savoir plus sur l'aide DirectShow.NET ici:
OriginalL'auteur Roman R.
J'ai essayé plusieurs approches, et l'approche la plus simple pour moi a été Emgu.cv(package nuget).
C'est ça
(comme de l'API de la version 3.3.0)
Ancienne API Approche
Je suis d'accord, honnêtement à cette question, le Titre devrait être restructuré pour être plus précis. Le corps de la question des demandes pour une approche sans 3ème partie les bibliothèques. Mais cette question est le seul concernant c# webcam capture d'image.
Comment faire pour enregistrer les images dans un dossier spécifié?
C'est juste une image bitmap à ce point, de sorte que vous pouvez le traiter comme n'importe quelle image. voici un lien avec comment. " stackoverflow.com/questions/12909905/saving-image-to-file
OriginalL'auteur Ashitakalax
Je recommande Aforge.net cadre.
Il a été en mesure de mettre en œuvre videoCaptureDevice classe utilisé dans l'exemple de projet: Instantané Maker exemple pour créer rapidement une capture d'image de boîte de dialogue. Il est un peu plus lent que
DirectShow Bibliothèque-Comment capturer une image en utilisant directshow de la bibliothèque, sans affichage de la webcam en direct les images sur la PictureBox ou Panneau mais il est stable et il est facile méthode pour le réglage de la vidéo et les résolutions d'image à partir d'un périphérique pris en charge.
Le seul problème que j'ai rencontré est VideoCaptureDevice.SimulateTrigger() utilise un bacjground fil pour créer une image à partir d'un flux vidéo et renvoie l'image d'un événement. La nécessité de déléguer méthode pour empêcher le fil des questions si vous placez l'image renvoyée sur un contrôle winform sur le thread d'INTERFACE utilisateur.
Obtenir le code source de l'Instantané Maker projet de Aforge.net source SVN lien.
OriginalL'auteur Gary Kindel