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

ピクセルを取得したら、次のステップは、画像の get ピクセルを使用してそれらの一部をサンプリングし、それらから明るさを構築することです: http://docs.unity3d.com/Documentation/ScriptReference/Texture2D.GetPixel.html

明るさの決定は少し複雑な問題であるため、アプリケーションによって異なります。RGB色の明るさを求める式には、単一ピクセルの明るさを求める方法があります。画像の中心に向かっていくつかのピクセルをサンプリングし、それらの平均を取ることができます。

より複雑なソリューションが必要な場合は、すべてのピクセルの明るさのヒストグラムを作成してから、ピークを見つけることができます。http://en.wikipedia.org/wiki/Image_histogram

于 2013-07-24T07:19:16.417 に答える