Мне нужно написать оболочку для моего кода C ++, чтобы использовать его в приложении c #. В основном мне нужно предварительно обработать образ Emgu из C # на стороне c ++ и вернуть его обратно. Я пытаюсь сделать это таким образом в неуправляемой стороне C ++:
public ref class ImageProcessor
{
public:
void process(Image<Bgr, Byte>^ InImage)
{
cv::Mat image(InImage->Width,
InImage->Height,
CV_8UC3,
InImage->Ptr.ToPointer());
cv::imwrite("mask.png", mask); //this line throws exception
}
};
Когда я вызываю функцию thiss из c #, исключение - throw:
System.AccessViolationException не было обработано
Сообщение = Попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена.
Вопрос в том, как правильно передать Emgu :: CV :: Image ^ из управляемого кода в неуправляемый c ++?