我有一个IDS UEye网络摄像头,想通过uEyeDotNet.dll(版本1.6.4.2)制作快照。
目前我正在使用这段代码。
var camera = new Camera();
camera.Init(_deskCamInfo.UEyeId);
camera.Memory.Allocate();
camera.Acquisition.Capture();
Thread.Sleep(500);
int s32MemID;
camera.Memory.GetActive(out s32MemID);
Bitmap image;
camera.Memory.ToBitmap(s32MemID, out image);
var converter = new ImageConverter();
var imageData = (byte[])converter.ConvertTo(image, typeof(byte[]));
当我使用Thread.Sleep(500)
的代码时,我按预期获得快照,一切正常。但是,如果我删除了Thread.Sleep(500)
,我会得到一张黑色图像,而我真的不知道为什么。
但是我不想为每个快照等待500毫秒,并希望在没有它的情况下解决这个问题。
在我的原始代码中,我检查了uEye方法中的每个结果值,并且我总是获得成功。刚删除此检查,因为很难用所有if语句阅读。
答案 0 :(得分:1)
我解决了这个问题。也许其他人有同样的问题,它可以提供帮助。
第二个猜测解决方案非常简单。我不得不改变
status = camera.Acquisition.Capture();
到
status = camera.Acquisition.Capture(DeviceParameter.Wait);
然后相机正在等待,直到您可以拍摄图像。