【发布时间】:2013-01-18 15:06:36
【问题描述】:
过去两天我一直在寻找一种使用 C# 从网络摄像头捕获图像的方法。我是 C# 的新手,我不想使用外部第三方库,所以我找到了两种不错的方法,但似乎都返回几乎相同的错误。我无法让其中任何一个工作,所以如果你能帮助我让其中一个运行或帮助我找到替代方案,那就太好了。
所以我发现的第一种方法是使用 Windows WIA。我找到了以下代码:
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");
这段代码似乎正是我正在寻找的,但我无法让它运行,因为我在第二行收到以下错误:
Exception from HRESULT: 0x80210015
我发现的第二种方法是使用带有以下示例的 Avicap32.dll:
http://www.timvw.be/wp-content/code/csharp/testavicap32.zip
但我正在使用此代码:
Image image = ((CaptureDevice)cboDevices.SelectedItem).Capture();
image.Save(@"c:\capture.png", ImageFormat.Png);
以下异常: 空引用异常: 对象引用未设置为对象的实例。
我认为这两种解决方案都导致了问题,因为它们找不到我的相机,但我可以在 Skype 中使用我的相机而没有任何问题。
【问题讨论】:
标签: c# image file webcam capture