首页 > 解决方案 > 如何使用 OpenCV 将图像从 C++ 传输到 Unity3D?

问题描述

我在将图像从 C++ 传输到 Unity3D(C#) 时遇到问题。我使用 OpenCV 读取Mat类型图像并使用img.data. 当我构建dll并调用相应的函数时,字节数组中的所有数据都为 0,所以我想知道如何将图像从 C++ 传输到 C#。谢谢你。

抱歉回复晚了,代码如下 C++ code

DLL_API BYTE* _stdcall MatToByte()
{

    Mat srcImg = imread("F:\\3121\\image\\image_0\\000000.png");
    nHeight = srcImg.rows;
    nWidth = srcImg.cols;

    nBytes = nHeight * nWidth * nFlag / 8;
    if (pImg)
        delete[] pImg;

    pImg = new BYTE[nBytes];
    memcpy(pImg, srcImg.data, nBytes);
    return pImg;
}

C# code

    [DllImport("Display")]
    public static extern IntPtr MatToByte();

        byte[] Bytes = new byte[nBytes];
        IntPtr tmp =  MatToByte();
        Marshal.Copy(tmp, Bytes, 0, nBytes);
        Texture2D texture = new Texture2D(width, height);
        texture.LoadImage(Bytes);
        left_plane.GetComponent<Renderer>().material.mainTexture = texture;

标签: c#c++opencvunity3d

解决方案


推荐阅读