Я пытаюсь отправить объект EmguCV Mat из C# в функцию DLL OpenCV C ++. Мои исходные данные находятся в массиве byte [], а затем я преобразую их в объект Mat.
Я получаю сообщение об ошибке в строке, которая вызывает мою функцию C ++: Ошибка CS0029 Не удается неявно преобразовать тип 'int' to 'Emgu.CV.Mat'
Я не уверен, как я должен передавать свои данные из кода C# в функцию C ++.
Вот мой код C#:
private void image_algorithms(byte[] buffer, int width, int height)
{
int grid_count = 5;
int grid_width = width / grid_count;
int grid_height = height / grid_count;
MyImage = new Image<Gray, byte>(width, height);
MyImage.Bytes = buffer;
Mat image_pre_crop = MyImage.Mat;
//calling C++ function here
Mat croppedImage = crop_image(image_pre_crop);
}
Моя функция C ++ выглядит так:
Mat crop_image(Mat image) {
bool fromCenter = false;
namedWindow("Crop frame", WINDOW_NORMAL);
Rect2d r = selectROI("Crop frame", image, fromCenter);
Mat imgCrop = image(r);
return imgCrop;
}