当前位置: 首页 > 编程语言 > C#

使用WIA在C#中使用网络摄像头自动拍照分享

时间:2023-04-10 14:25:02 C#

C#学习教程:使用WIA在C#中使用网络摄像头自动拍照我正在开发的代码非常简单:按下按钮时,会拍摄网络摄像头图像,然后将其显示在图片框中。我已经可以用我的网络摄像头拍照,但它还没有完全自动化。我发现检索网络摄像头拍摄的照片的唯一方法是使用:wiaPics=wiaRoot.GetItemsFromUI(WiaFlag.SingleImage,WiaIntent.ImageTypeColor)asCollectionClass;但这需要用户选择图片。我总是想拍最后一张照片。所以我正在尝试这种方式:stringimageFileName=Path.GetTempFileName();//为图像创建临时文件wiaItem=wiaRoot.TakePicture();//拍照Cursor.Current=Cursors.WaitCursor;//可能需要一些时间this.Refresh();wiaItem.Transfer(imageFileName,false);//将图片传输到我们的临时文件pictureBox1.Image=Image.FromFile(imageFileName);//从文件创建Image实例Marshal.ReleaseComObject(wiaItem);但是TakePicture()方法返回null,所以我无法传输图像。最奇怪的是,直到调用TakePicture()方法后才真正拍摄照片,因为如果我手动转到网络摄像头,照片就在那里!我只是不明白为什么它不返回值。总而言之,我需要以下两者之一:1.让TakePicture()正常工作,返回一个我可以使用的值。2.自动访问网络摄像头图片列表以检索最后拍摄的图片。最诚挚的问候并感谢您的帮助,Micael。据我所知,wiaItem=wiaRoot.TakePicture()走错了路。试试这个:字符串图像文件名;wiaRoot.TakePicture(outtakenFileName);pictureBox1.Image=Image.FromFile(图像文件名);TakePicture将图片保存到文件并将新文件的名称作为输出参数返回。根据您的评论进行编辑-您使用的是WiaLib的“Windows7版本”吗?如果是这样,尝试这样的事情:varmanager=newDeviceManagerClass();项目wiaItem;设备设备=空;foreach(varinfoinmanager.DeviceInfos){if(info.DeviceID==DESIRED_DEVICE_ID){device=info.Connect();wiaItem=device.ExecuteCommand(CommandID.wiaCommandTakePicture);您正在使用ExecuteCommand和众所周知的guid(也从COM互操作包装器公开)而不是TakePicture。无论如何,它适用于我的网络摄像头。以上就是C#学习教程:使用WIA在C#中使用网络摄像头自动拍照分享全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表作品如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: