Unity3d 将Color[]或Color32[]转换为YV12、NV21或YUV_420_888图像格式

Unity3d 将Color[]或Color32[]转换为YV12、NV21或YUV_420_888图像格式,unity3d,image-processing,Unity3d,Image Processing,Unity的WebCamTexture允许访问底层纹理的Color[]或Color32[]。基于其中任何一种,我想找到一种方法将纹理转换为YV12、NV21或YUV_420_888图像格式(任意)。我没有图像处理方面的背景知识,所以我的问题很可能框架不正确,因此我希望能对此有所了解。好吧,这是值得一试的 var texture = new Texture2D(tex.width, tex.height, TextureFormat.YUY2, tex.mipmapCount > 1);

Unity的
WebCamTexture
允许访问底层纹理的
Color[]
Color32[]
。基于其中任何一种,我想找到一种方法将纹理转换为YV12、NV21或YUV_420_888图像格式(任意)。我没有图像处理方面的背景知识,所以我的问题很可能框架不正确,因此我希望能对此有所了解。

好吧,这是值得一试的

  var texture = new Texture2D(tex.width, tex.height, TextureFormat.YUY2, tex.mipmapCount > 1); 
  texture.SetPixels32(WebCamTexture.Color32);
  texture.Apply();

我们的想法是得到32种颜色,并将其发送到一个新的纹理。这将占用大量资源,请尽量少调用此

而不是
WebCamTexture.Color32
我想你的意思是?而
dstTexture
应该是
texture
@derHugo是的,没错。看来TextureFormat没有YV12属性。应该有一个吗?抱歉。我不认为YV12可能被写成YUY2,您可以在这里检查,希望这对您有所帮助,因为它告诉您所有的枚举,因为它在代码中不能真正有确切的名称。根据我在TextureFormat as 12和其他事物中的说法,它指的是深度和高度。你应该基本上改变tex.width和height为必要的。请告诉我这是否有帮助,然后我会相应地改变答案代码,这样可能会对未来的人们有所帮助。谢谢:D