gpt4 book ai didi

C# 从网络摄像头捕获图像

转载 作者:可可西里 更新时间:2023-11-01 08:55:48 25 4
gpt4 key购买 nike

过去两天我一直在寻找一种使用 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 中毫无问题地使用我的相机。

最佳答案

我尝试了多种方法,对我来说最简单的方法是 Emgu.cv(nuget 包)。

        VideoCapture capture = new VideoCapture(); //create a camera capture
Bitmap image = capture.QueryFrame().Bitmap; //take a picture

就是这样(从 API 版本 3.3.0 开始)

旧的 API 方法

        Capture capture = new Capture(); //create a camera captue
Bitmap image = capture.QueryFrame().Bitmap; //take a picture

关于C# 从网络摄像头捕获图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com