Крах Unity, вызванный EmguCV - PullRequest
0 голосов
/ 25 мая 2018

У меня есть ошибка в моей программе, из-за которой происходит сбой Unity после попытки запустить эту функцию.Функция заключается в том, чтобы преобразовать Texture2D в изображение

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 (как редактор, так и отдельное приложение) просто потерпел крах и не отображал никаких ошибок.Только показывая это окно .

Я могу думать только о нарушении доступа к памяти (но приложение не показывает никаких исключений)

Если я удалю функцию, программа запуститсяобычно

Я использую Unity Personal с EmguCV (настольная версия).

1 Ответ

0 голосов
/ 25 мая 2018

Проблема, которая вызывает сбой приложения:

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

Проблема решена после создания новой библиотеки DLL, содержащей функцию и прикрепившей ее к единице и работающей.Weird ...

...