如何将网络摄像头纹理编码为 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();
设置: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();