C# 统一获取视频纹理中像素块的颜色范围

C# 统一获取视频纹理中像素块的颜色范围,c#,unity3d,unity5,C#,Unity3d,Unity5,我试图在每次更新时从视频纹理中的特定4x4区域获得平均颜色。它可以是黑色也可以是白色,但因为我正在播放视频,而且分辨率有时会有所不同,所以它也可能是灰色的。我需要更精确地找出光谱的白色/浅灰色部分是“几乎黑色”还是更多 我对c#和unity很陌生。我发现Texture2D.GetPixel或Texture2D.GetPixels32可能更好,但我真的不确定如何从视频纹理中做到这一点 感谢所有能提供帮助的人。看看这篇文章。看起来你在做和那个人一样的事情,从图像中获取纹理并平均像素 P>我不认为这

我试图在每次更新时从视频纹理中的特定4x4区域获得平均颜色。它可以是黑色也可以是白色,但因为我正在播放视频,而且分辨率有时会有所不同,所以它也可能是灰色的。我需要更精确地找出光谱的白色/浅灰色部分是“几乎黑色”还是更多

我对c#和unity很陌生。我发现Texture2D.GetPixel或Texture2D.GetPixels32可能更好,但我真的不确定如何从视频纹理中做到这一点

感谢所有能提供帮助的人。

看看这篇文章。看起来你在做和那个人一样的事情,从图像中获取纹理并平均像素

<> P>我不认为这是重复的,因为你想从特定的(4x4)区域得到一个像素,而不是从纹理中获得所有像素。 Texture2D.GetPixel或Texture2D.GetPixels32可能更好

因为要在特定像素上执行此操作,所以不能使用
Texture2D.GetPixel
Texture2D.GetPixels32
执行此操作。你甚至不需要你正在使用的UniversalMediaPlayer插件

您可以使用该函数执行此操作。注意结尾的“s”

这是功能原型:

Color[] GetPixels(int x, int y, int blockWidth, int blockHeight);
根据要从纹理中读取的像素的位置,它应该如下所示:

Color[] texColors = tex.GetPixels(0, 0, 4, 4);
您需要使用它,而不是
Color32[]texColors=tex.GetPixels32()来自答案

注意


如果您喜欢UniversalMediaPlayer视频插件而不是Unity的新视频播放器,您仍然可以使用它。解决方案应该仍然有效。

视频代码在哪里?我目前正在使用UniversalMediaPlayer在任何对象上传输视频(来自unity asset store)。非常感谢程序员!有你们这样的人帮助像我这样的初学者,而不是因为我们没有先从里到外学习语言而把我们当成白痴,这真是太好了。我希望有一种方法来回报你,而不仅仅是一个“复选标记”。同时,感谢你解释代码非常好。欢迎你。别忘了在将来的问题中添加代码(如果必要的话),这样你的问题就不会被否决。