首页 > 解决方案 > 将 Mat 数组从 EmguCV 传递到 OpenCV?

问题描述

我正在尝试将 EmguCV Mat 对象从 C# 发送到 OpenCV C++ DLL 函数。我的原始数据位于 byte[] 数组中,然后我将其转换为 Mat 对象。

我在调用我的 C++ 函数时遇到错误:错误 CS0029 无法将类型“int”隐式转换为“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;

}

标签: c#c++opencvemgucvmat

解决方案


推荐阅读