я пытался использовать 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);
}