用IDS制作快照UEYE黑色图像



我有一个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),我会得到一个黑色图像,我真的不知道为什么。

,但我不想等待每个快照的500ms,并且想解决这个问题。

在我的原始代码中,我从UEYE方法中检查每个结果值,我将始终取得成功。只是删除了此检查,因为很难用所有IF语句阅读。

我解决了问题。也许其他人遇到了同样的问题,它可以提供帮助。

第二个猜测解决方案真的很简单。我不得不更改

status = camera.Acquisition.Capture();

to

status = camera.Acquisition.Capture(DeviceParameter.Wait);

,然后相机等到您可以捕获图像。

您还可以从相机订阅 eventframe ,然后使用 capture 启动相机之前。a比读取订阅函数中的相机内存:

                Int32 s32MemID;
                uEye.Defines.Status statusRet = Camera.Memory.GetLast(out s32MemID);
                System.Drawing.Bitmap image= null;
                Camera.Memory.ToBitmap(s32MemID, out image);

...

P.S。( DeviceParameter.Wait 是根据IDS弃用的,但如果它解决了您的问题谁该死:-)(

相关内容

  • 没有找到相关文章

最新更新