Как конвертировать растровое изображение в Intptr в C # - PullRequest
0 голосов
/ 03 июня 2010

В моем проекте я хочу использовать 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 ]

1 голос
/ 14 марта 2013

Это может быть старый вопрос, но если вы используете EmguCV, преобразование Bitmap в IntPtr может быть выполнено (начиная с версии 2.4.2), как в следующем примере:

Bitmap bitmap = new Bitmap("pathToBitmapFile");

Image<Bgr,byte> image = new Image<Bgr,byte>(bitmap);

IntPtr = image.Ptr;   

См. Документация EmguCV

0 голосов
/ 03 июня 2010

Вы хотите обернуть это в классе ....

Я сделал это и назвал его «FastBitmap», и вы можете заблокировать его в конструкторе, получить ptr и добавить методы для работы с ptr

...