我正在使用 WIALib 访问我的网络摄像头。我正在开发的代码非常简单:按下按钮时会拍摄网络摄像头图片,然后显示在图片框中。
我已经可以用我的网络摄像头拍照,但它还不是完全自动化的。我发现检索网络摄像头拍摄的照片的唯一方法是使用以下方法:
wiaPics = wiaRoot.GetItemsFromUI( WiaFlag.SingleImage, WiaIntent.ImageTypeColor ) as CollectionClass;
但这要求用户选择图片。我总是想拍最后一张照片。所以我正在尝试这种方式:
string imageFileName = Path.GetTempFileName(); // create temporary file for image
wiaItem = wiaRoot.TakePicture(); // take a picture
Cursor.Current = Cursors.WaitCursor; // could take some time
this.Refresh();
wiaItem.Transfer(imageFileName, false); // transfer picture to our temporary file
pictureBox1.Image = Image.FromFile(imageFileName); // create Image instance from file
Marshal.ReleaseComObject(wiaItem);
但是 TakePicture() 方法返回 null,因此我无法传输图像。最奇怪的是,照片是在调用 TakePicture() 方法之后才拍摄的,因为如果我手动访问网络摄像头,照片就在那里!我只是不明白为什么它不返回值。
总而言之,我需要以下两个之一: 1. 让 TakePicture() 工作,返回一个我可以使用的值。2. 自动访问网络摄像头的照片列表,这样我就可以检索到最后一张照片。
最好的问候和感谢您的帮助,米卡尔。