如何将网络摄像头纹理编码为 png?

How to encode to png a webcam texture?

设置: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)

我认为你少了几个步骤 获取可用设备列表 将设备名称设置为网络摄像头 在设置纹理之前播放网络摄像头

网络摄像头是一个Texture,你可以对png Texture2d进行编码。 所以解决办法是:

Texture2D tex = new Texture2D(backCam.width, backCam.height);
tex.SetPixels(backCam.GetPixels());
tex.Apply();
byte[] bytes =  tex.EncodeToPNG();