在Unity中获取视频纹理中像素块的颜色范围
Getting color range of pixel block in video texture in Unity
我试图在每次更新时从视频纹理中的特定 4x4 区域获取平均颜色。它可以是黑色或白色,但因为我正在播放视频并且分辨率不时不同,它也可能是灰色的。我需要更准确地找出它在光谱的 white/light 灰色一侧是否为 "almost black" 或更多。
我对 c# 和 unity 还很陌生。我发现 Texture2D.GetPixel 或 Texture2D.GetPixels32 可能更好,但我真的不确定如何从视频纹理中做到这一点。
感谢任何能提供帮助的人。
看看 post。看起来您正在做与那个人相同的事情,即从图像中获取纹理并平均像素。
我不认为这是重复的原因是因为您想从特定 (4x4) 区域获取像素而不是纹理的所有像素。
Texture2D.GetPixel or Texture2D.GetPixels32 might be better,
因为您想在特定像素上执行此操作,所以无法使用 Texture2D.GetPixel
或 Texture2D.GetPixels32
执行此操作。您甚至不需要您正在使用的 UniversalMediaPlayer 插件。
您可以使用 GetPixels
函数执行此操作。注意最后的's'。
这是函数原型:
Color[] GetPixels(int x, int y, int blockWidth, int blockHeight);
根据您想从纹理中读取的像素位置,它应该看起来像这样:
Color[] texColors = tex.GetPixels(0, 0, 4, 4);
您需要使用它来代替 this 答案中的 Color32[] texColors = tex.GetPixels32();
。
注:
如果您更喜欢 UniversalMediaPlayer 视频插件而不是 Unity 的新 VideoPlayer,您仍然可以使用它。 GetPixels
解决方案应该仍然有效。
我试图在每次更新时从视频纹理中的特定 4x4 区域获取平均颜色。它可以是黑色或白色,但因为我正在播放视频并且分辨率不时不同,它也可能是灰色的。我需要更准确地找出它在光谱的 white/light 灰色一侧是否为 "almost black" 或更多。
我对 c# 和 unity 还很陌生。我发现 Texture2D.GetPixel 或 Texture2D.GetPixels32 可能更好,但我真的不确定如何从视频纹理中做到这一点。
感谢任何能提供帮助的人。
看看
我不认为这是重复的原因是因为您想从特定 (4x4) 区域获取像素而不是纹理的所有像素。
Texture2D.GetPixel or Texture2D.GetPixels32 might be better,
因为您想在特定像素上执行此操作,所以无法使用 Texture2D.GetPixel
或 Texture2D.GetPixels32
执行此操作。您甚至不需要您正在使用的 UniversalMediaPlayer 插件。
您可以使用 GetPixels
函数执行此操作。注意最后的's'。
这是函数原型:
Color[] GetPixels(int x, int y, int blockWidth, int blockHeight);
根据您想从纹理中读取的像素位置,它应该看起来像这样:
Color[] texColors = tex.GetPixels(0, 0, 4, 4);
您需要使用它来代替 this 答案中的 Color32[] texColors = tex.GetPixels32();
。
注:
如果您更喜欢 UniversalMediaPlayer 视频插件而不是 Unity 的新 VideoPlayer,您仍然可以使用它。 GetPixels
解决方案应该仍然有效。