2013-07-23 35 views
0

在我的項目中,我需要獲取正在顯示的屏幕的亮度。要做到這一點,我得到的屏幕快照,並使其作爲一個Texture2D獲取顯示屏幕或Texture2D的亮度 - Unity3D

要獲取快照,並將其轉換我用這個:

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); 
} 

,但我仍然需要得到亮度。
任何建議將被接受(關於亮度和/或關於轉換)。
在此先感謝。

回答

0

一旦你擁有的像素,下一步是使用獲得圖像中的像素來品嚐他們中的一些,並建立從它們的亮度: http://docs.unity3d.com/Documentation/ScriptReference/Texture2D.GetPixel.html

確定亮度是有點複雜的問題,所以它真的取決於你的應用程序。 Formula to determine brightness of RGB color有確定單個像素亮度的方法。你可以向圖像中心抽取幾個像素,然後取這些像素的平均值。

如果您需要更復雜的解決方案,您可以建立所有像素亮度的直方圖,然後找到峯值。 http://en.wikipedia.org/wiki/Image_histogram