现在我为自己开发佳能EDSDK。我的实时取景图像非常慢(每秒 5 张图像)。我怎样才能更快地做到这一点?
这是我获取图像指针的代码:
uint _err = EDSDK.EDS_ERR_OK;
IntPtr imageRef = IntPtr.Zero;
IntPtr streamRef = IntPtr.Zero;
IntPtr streamPtr = IntPtr.Zero;
单位长度 = 0;
_err = EDSDK.EdsCreateMemoryStream(0, out streamRef);
如果(EDSDK.EDS_ERR_OK == _err)
_err = EDSDK.EdsCreateEvfImageRef(streamRef, out imageRef);
如果(EDSDK.EDS_ERR_OK == _err)
_err = EDSDK.EdsDownloadEvfImage(_camera, imageRef);
如果(EDSDK.EDS_ERR_OK == _err)
{
// 显示图像
_err = EDSDK.EdsGetPointer(streamRef, out streamPtr);
如果(EDSDK.EDS_ERR_OK == _err)
_err = EDSDK.EdsGetLength(streamRef, out Length);
}
然后我将图像加载到位图,它非常非常慢。我的代码:
字节[] b = 新字节[长度];
Marshal.Copy(streamPtr, b, 0, (int)Length);
使用 (MemoryStream ac = new MemoryStream(b))
{
img = (Bitmap)Image.FromStream(ac);
ac.Close();
}