0
私はAndroidスタジオ2.2を使用しており、byte[] data
アレイをカメラからonPreviewFrame()
に取得しています。カメラからの画像の解像度と同じサイズのビットマップを可変可能にしました。ビットマップのピクセルを、byte[] data
の配列をYUV
からRGB
の形式に変換することによって得られるint[] array
のピクセルで上書きしたいとします。だから、私は次のようにします:Androidスタジオカラーint配列からカラーintマトリックス
そしてここcorrectWithIntArray
を使用しているとき私が得る画像は、次のとおりです:ここで
は、私がイメージを取得するには、Androidのクラスで作られたイメージはある
私は間違って何をやっていますそのループ?私の機能でint[] data
配列を作成するための
機能は次のとおりです。
/**
* Converts YUV420 NV21 to RGB8888
*
* @param data byte array on YUV420 NV21 format.
* @param width pixels width
* @param height pixels height
* @return a RGB8888 pixels int array. Where each int is a pixels ARGB.
*/
public static int[] convertYUV420_NV21toRGB8888(byte [] data, int width, int height) {
int size = width*height;
int offset = size;
int[] pixels = new int[size];
int u, v, y1, y2, y3, y4;
// i percorre os Y and the final pixels
// k percorre os pixles U e V
for(int i=0, k=0; i < size; i+=2, k+=2) {
y1 = data[i ]&0xff;
y2 = data[i+1]&0xff;
y3 = data[width+i ]&0xff;
y4 = data[width+i+1]&0xff;
u = data[offset+k ]&0xff;
v = data[offset+k+1]&0xff;
u = u-128;
v = v-128;
pixels[i ] = convertYUVtoRGB(y1, u, v);
pixels[i+1] = convertYUVtoRGB(y2, u, v);
pixels[width+i ] = convertYUVtoRGB(y3, u, v);
pixels[width+i+1] = convertYUVtoRGB(y4, u, v);
if (i!=0 && (i+2)%width==0)
i+=width;
}
return pixels;
}