在我的项目中我想使用EmguCV lib,但是EmguCV的功能无法处理Bitmap对象,所以我必须将Bitmap转换为其他类型,Intptr是一个选择,但我真的不知道如何编码,这个代码是我的项目的抽象代码:
Bitmap bmp = new Bitmap(e.width, e.height,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
System.Drawing.Imaging.BitmapData data =
bmp.LockBits(new Rectangle(0, 0, e.width, e.height),
System.Drawing.Imaging.ImageLockMode.ReadWrite,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
int dataLength = e.width * e.height * 3;
Win32.memcpy(data.Scan0, (IntPtr)e.data, (uint)dataLength);
convertBitmapToIntptr(bmp);
如何在此功能中编码convertBitmapToIntptr(bmp)
?
答案 0 :(得分:1)
这可能是一个老问题,但是如果你使用的是EmguCV,可以完成Bitmap到IntPtr转换(从版本2.4.2开始),如下例所示:
Bitmap bitmap = new Bitmap("pathToBitmapFile");
Image<Bgr,byte> image = new Image<Bgr,byte>(bitmap);
IntPtr = image.Ptr;
答案 1 :(得分:0)
你想把它包装在一个类......
我已完成此操作并将其命名为“FastBitmap”,您可以将其锁定在构造函数中,获取ptr,并添加方法以使用ptr