Преобразовать из растрового изображения в MIplImage или IplImage C#

У меня есть алгоритм, созданный в C++, чтобы сделать вычитание фона, и я хочу вызвать его из C# с аргументом "IplImage", используя dll(extern). Проблема в том, что я получаю поток камеры в C#, и у меня есть кадр как изображение (растровое изображение).

Как я могу преобразовать растровое изображение в IplImage, чтобы отправить его в C++ и наоборот, чтобы получить обработанный кадр?

Большое спасибо.

1 ответ

Используя Emgucv, вы можете попробовать

Bitmap bitmap = ....
Emgu.CV.Image<Bgr, Byte> img = new Image<Bgr, byte>(bitmap);
Emgu.CV.Structure.MIplImage = img.MIplImage;

чтобы отправить его в C++ метод, вы можете передать его как IntPtr объект

IntPtr r = IntPtr.Zero;
System.Runtime.InteropServices.Marshal.StructureToPtr(img, r, false);

// call your c++ method 
...

также смотрите подробно о Marshal

Другие вопросы по тегам