由EmguCV引起的Unity崩溃

时间:2018-05-25 10:44:44

标签: unity3d emgucv

我的程序出错了,在尝试运行此函数后,unity崩溃了。该功能是将Texture2D转换为Image

void SetTextureDefault()
{
    try
    {
        Texture2D currentTexture = new Texture2D(CameraTexture.width, CameraTexture.height);
        currentTexture.SetPixels(CameraTexture.GetPixels());
        currentTexture.Apply();

        // Asuming leftBackground and rightBackground of Image<Bgra, byte> exist

        if (leftBackground == null || rightBackground == null)
        {
            using (var ms = new MemoryStream(currentTexture.EncodeToPNG()))
            {
                leftBackground = new Image<Bgra, byte>(new Bitmap(ms));
            }
        }
        else
        {
            rightBackground.Bytes = leftBackground.Bytes = currentTexture.EncodeToPNG();
        }
    }
    catch (Exception err)
    {
        Debug.Log(err.StackTrace);
    }
}

Unity(编辑器和独立应用程序)刚刚崩溃并且没有显示任何错误。仅显示此window

我只能考虑内存访问违规(但应用程序没有显示任何泄漏)

如果删除该功能,程序将正常运行

我使用Unity个人与EmguCV(桌面版)。

1 个答案:

答案 0 :(得分:0)

导致应用程序崩溃的问题是:

leftBackground = new Image<Bgra, byte>(new Bitmap(ms));

在构建包含该函数的新dll并将其附加到unity并工作后,问题得以解决。 奇怪的...