Как кодировать в png текстуру веб-камеры? - PullRequest
0 голосов
/ 02 мая 2020

Настройка: Unity 2019

Я пытаюсь получить текстуру с плоскости.

Я фиксирую вход камеры и отображаю ее на плоскости. Тогда я хочу читать текстуру непрерывно.

Я попробовал что-то подобное. PS: я новичок с Unity.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraInput : MonoBehaviour
{

static WebCamTexture backCam;

void Start()
{
    if (backCam == null)
        backCam = new WebCamTexture();

    GetComponent<Renderer>().material.mainTexture = backCam;

    if (!backCam.isPlaying)
        backCam.Play();

}

void Update()
{

     byte[] bytes = GetComponent<Renderer>().material.mainTexture.EncodeToPNG();
         System.IO.File.WriteAllBytes(path, bytes);
         Debug.Log(bytes.Length/1024  + "Kb was saved as: " + path);

}

}

Получена ошибка:

Невозможно получить ссылку на изображение UnityEngine.ImageConversion: EncodeToPNG (Texture2D)

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Веб-камера - это текстура, и вы можете закодировать Texture2d. Таким образом, решение этого:

Texture2D tex = new Texture2D(backCam.width, backCam.height);
tex.SetPixels(backCam.GetPixels());
tex.Apply();
byte[] bytes =  tex.EncodeToPNG();  
0 голосов
/ 02 мая 2020

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

...