0

在我的项目中,我需要获取正在显示的屏幕的亮度。为此,我获取屏幕快照并将其设置为 Texture2D

要获取快照并将其转换,我使用以下命令:

public void GetScreen(ref Texture2D screenShot){
        RenderTexture rt = new RenderTexture(Screen.Width, Screen.Height, 24);
        camera.targetTexture = rt;
        screenShot = new Texture2D(Screen.Width, Screen.Height, TextureFormat.RGB24, false);
        camera.Render();
        RenderTexture.active = rt;
        screenShot.ReadPixels(new Rect(0, 0, Sreen.Width, Screen.Height), 0, 0);
        camera.targetTexture = null;
        RenderTexture.active = null;
        Destroy(rt);
}

但我仍然需要获得亮度。
任何建议都将被接受(关于亮度和/或关于转换)。
提前致谢。

4

1 回答 1

0

获得像素后,下一步是使用图像上的获取像素对其中一些进行采样并从中构建亮度:http: //docs.unity3d.com/Documentation/ScriptReference/Texture2D.GetPixel.html

确定亮度是一个有点复杂的问题,所以它真的取决于你的应用程序。确定 RGB 颜色亮度的公式有确定单个像素亮度的方法。您可以对图像中心的几个像素进行采样,然后取它们的平均值。

如果您需要更复杂的解决方案,您可以构建所有像素亮度的直方图,然后找到峰值。http://en.wikipedia.org/wiki/Image_histogram

于 2013-07-24T07:19:16.417 回答