[英]when I convert my rgb bitmap to yuv it results in a red image. I want to read image from gallery in YUV format or convert the RGB bitmap to YUV
我想使用圖像的Y,U和V通道。 如何定位這些渠道? 需要幫助進行轉換。 請給我一些示例代碼。 這是我的代碼。
public void YUVImage(View view) {
Bitmap bitmap = ((BitmapDrawable)OrignalImg.getDrawable()).getBitmap();//reading image from imageView
int bwidth = bitmap.getWidth();
int bheight = bitmap.getHeight();
Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas c = new Canvas(mutableBitmap);
Toast.makeText(this, "Done 1 ok ",
Toast.LENGTH_LONG).show();
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
Toast.makeText(this, "Done 2 ok ",
Toast.LENGTH_LONG).show();
ColorMatrix yuvMatrix = new ColorMatrix();
yuvMatrix.setRGB2YUV();
Toast.makeText(this, "Now Yuv ok ",
Toast.LENGTH_LONG).show();
ColorFilter filter = new ColorMatrixColorFilter(yuvMatrix);
paint.setColorFilter(filter);
Matrix matrix = new Matrix();
matrix.setTranslate(2*bwidth, 2*bheight);
c.drawBitmap(mutableBitmap, 0, 0, paint);
Toast.makeText(this, "Canvas ok ",
Toast.LENGTH_LONG).show();
ImageView mImg=null;
mImg = (ImageView) findViewById(R.id.imageView1);
mImg.setImageDrawable(new BitmapDrawable(getResources(), mutableBitmap));
//mImg.setImageBitmap(newBitmap);
Toast.makeText(this, "YUV Image converted",
Toast.LENGTH_LONG).show();
}
如果只需要這些值,那么您只需要簡單的數學運算即可。
void rgb2yuv(int r, int g, int b) {
int y = (int)(0.299 * r + 0.587 * g + 0.114 * b);
int u = (int)((b - y) * 0.492f);
int v = (int)((r - y) * 0.877f);
}
只需將0替換為您的圖片尺寸即可。
c.drawBitmap(mutableBitmap,x,y,paint);
它幫助了我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.