Преобразовать из растрового изображения в 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