2

私のアプリケーションは画像をキャプチャし、それにフィルターを適用して画像の RGB 値を変更します。

変更したら、画像自体の上に各色 (赤、緑、青) のヒストグラムを表示したいと思います。

RGB値を取得する方法とビットマップを取得する方法は既に知っていますが、それらをプロットする方法がわかりません。

RGB 値のコード:

    int[] pixels = new int[width*height];
    int index = 0;
    image.getPixels(pixels, 0, width, 0, 0, width, height);
    Bitmap returnBitmap = Bitmap.createBitmap(width, height,
            Bitmap.Config.ARGB_8888);

    for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
            A = (pixels[index] >> 24) & 0xFF;
            R = (pixels[index] >> 16) & 0xFF;
            G = (pixels[index] >> 8) & 0xFF;
            B = pixels[index] & 0xFF;
                            ++index;

                     }
            }
4

1 に答える 1

5

私たちは似たようなことをしました。次のように画像のビットマップを取得しました。

Bitmap bmp = BitmapFactory.decodeResource(<youImageView>.getResources(), R.drawable.some_drawable);

次に、すべてのピクセルを繰り返し処理し、次のコードを使用してピクセルの色を取得しました。

int color = bmp.getPixel(i, j);
int[] rgbValues = new int[]{
                (color >> 16) & 0xff, //red
                (color >>  8) & 0xff, //green
                (color      ) & 0xff  //blue
            };

編集:
これを使用して不透明度を取得することもできることを読みました:

int color = bmp.getPixel(i, j);
int[] rgbValues = new int[]{
                (color >> 24) & 0xff, //alpha
                (color >> 16) & 0xff, //red
                (color >>  8) & 0xff, //green
                (color      ) & 0xff  //blue
            };

値が既にある場合は、androidplotを使用してグラフを作成することをお勧めします。使いやすい例がいくつかあります。棒グラフは使用していませんが、折れ線グラフは問題なく機能しました。androidplotの BarCharts の例を次に示します。
そして、さまざまな値を合計してから、(必要に応じて) 正規化します。


最終的にグラフを表示するには、レイアウトを FrameLayout として作成すると、z オーダーの作業に役立つ場合がありますここで行う必要があるのは、グラフを含むレイアウトの一部を表示/非表示にすることだけです。( View.setVisibility)

于 2013-08-07T10:49:28.067 に答える