EmguCV Unity VideoCapture Lag - PullRequest
0 голосов
/ 07 июля 2019

я пытался использовать EmguCV в Unity. в функции «Обновление» я просто беру кадр (1920x1080) из VideoCapture и применяю его к спрайту. в настоящее время этот метод по какой-то причине стоит много памяти, а сцена чрезвычайно запаздывает.

void Update()
    {
        _frame = cap.QueryFrame();
        Image<Bgr, byte> currImage = _frame.ToImage<Bgr, byte>();
        //CvInvoke.Imshow("test", _frame);
        Destroy(cameraTex);
        cameraTex = TextureConvert.ImageToTexture2D<Bgr, byte>(currImage, FlipType.Horizontal);
        RenderTexture(cameraTex);
        ResizeTexture(cameraTex);

    }
 private void RenderTexture(Texture2D texture)
    {
            Image image = this.GetComponent<Image>();
            Sprite.DestroyImmediate(image.sprite);
            image.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
    }

    private void ResizeTexture(Texture2D texture)
    {
        Image image = this.GetComponent<Image>();
        var transform = image.rectTransform;
        transform.sizeDelta = new Vector2(texture.width, texture.height);
        //transform.position = new Vector3(-texture.width / 2, -texture.height / 2);
        transform.anchoredPosition = new Vector2(0, 0);
    }
...