最近两天我一直在寻找一种使用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");
Run Code Online (Sandbox Code Playgroud)
这段代码似乎是我正在寻找的,但是我无法让它运行,因为我在第二行遇到以下错误:
Exception from HRESULT: 0x80210015
Run Code Online (Sandbox Code Playgroud)
我找到的第二种方法是使用带有以下示例的Avicap32.dll:
http://www.timvw.be/wp-content/code/csharp/testavicap32.zip
Run Code Online (Sandbox Code Playgroud)
但是我正在使用这段代码:
Image image = ((CaptureDevice)cboDevices.SelectedItem).Capture();
image.Save(@"c:\capture.png", ImageFormat.Png);
Run Code Online (Sandbox Code Playgroud)
以下异常:NullReferenceException:未将对象引用设置为对象的实例.
我认为这两种解决方案都会导致问题,因为他们无法找到我的相机,但我可以在skype中使用我的相机而没有任何问题.
我最近开始使用MongoDB,我有一个关于更新文档中的数组的问题.我有这样的结构:
{
"_id" : ObjectId(),
"post" : "",
"comments" : [
{
"user" : "test",
"avatar" : "/static/avatars/asd.jpg",
"text" : "....."
}
{
"user" : "test",
"avatar" : "/static/avatars/asd.jpg",
"text" : "....."
}
{
"user" : "test",
"avatar" : "/static/avatars/asd.jpg",
"text" : "....."
}
...
]
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行以下查询:
update({"comments.user":"test"},{$set:{"comments.$.avatar": "new_avatar.jpg"}},false,true)
Run Code Online (Sandbox Code Playgroud)
问题是它更新了所有文档,但它只更新了每个文档中的第一个数组元素.有没有办法更新所有数组元素或我应该尝试手动执行?谢谢.