1

現在、プレビュー フレームの領域にエッジ検出を適用するプログラムに取り組んでいます。私は previewcallback を使用してトリミングされたビットマップを取得し、次の方法を使用してグレースケールに変換しました。

int height1=120;
int width2=120;

            final Bitmap resizedBitmap = Bitmap.createBitmap(bmp, 260, 15, 
                    width2, height1);
            try {
                int bWidth = resizedBitmap.getWidth();
                int bHeight = resizedBitmap.getHeight();
                int[] pixels = new int[bWidth * bHeight];
                resizedBitmap.getPixels(pixels, 0, bWidth, 0, 0, bWidth, bHeight);
                for (int y = 0; y < bHeight; y++){
                    for (int x = 0; x < bWidth; x++){
                        int index = y * bWidth + x;
                        int R = (pixels[index] >> 16) & 0xff;     //bitwise shifting
                        int G = (pixels[index] >> 8) & 0xff;
                        int B = pixels[index] & 0xff;
                        int gray = (int) (.299 * R + .587 * G + .114 * B);
                    }
                }

私はこれに非常に慣れていないので、グレーが 120x120 ピクセルの 2D 配列なのか、それともグレーの値がループごとに上書きされているのかを知りたいです。

これが非常に基本的なものである場合はお詫び申し上げます

4

1 に答える 1

0

うーん、何かが足りないのかもしれませんが、私が見る限りgray上書きされています。次のようなものが必要です

int[][] gray = new int[width][height];
// start loop

ループの中:

gray[x][y] = ...;
于 2012-07-24T14:10:48.623 に答える