如何在C#中将位图转换为intptr

时间:2010-06-03 01:12:30

标签: c# opencv emgucv

在我的项目中我想使用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)

2 个答案:

答案 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;   

请参阅EmguCV Documentation

答案 1 :(得分:0)

你想把它包装在一个类......

我已完成此操作并将其命名为“FastBitmap”,您可以将其锁定在构造函数中,获取ptr,并添加方法以使用ptr