在我的应用程序中,我必须处理图像的各个像素。 首先,我用这段代码给出了灰度图像
private Bitmap BiancoNero(Bitmap originalBitmap) {
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.setSaturation(0);
ColorMatrixColorFilter colorMatrixFilter = new ColorMatrixColorFilter(
colorMatrix);
Bitmap blackAndWhiteBitmap = originalBitmap.copy(
Bitmap.Config.ARGB_8888, true);
Paint paint = new Paint();
paint.setColorFilter(colorMatrixFilter);
Canvas canvas = new Canvas(blackAndWhiteBitmap);
canvas.drawBitmap(blackAndWhiteBitmap, 0, 0, paint);
return blackAndWhiteBitmap;
}
之后,绘制一个只有0和1的矩阵(0白色,1黑色) 具有以下控制
if(colore==-1)
matrice[i][j] = 0; //zero is for white
else if(colore == -16777216)
matrice[i][j] = 1; //black pixel
else
matrice[i][j] =0; //other shades of gray
如何获得深灰色的细微差别?
也就是说,当我们考虑白色0%和黑色100%时,我想找到66%以上的所有颜色
我刚刚输入if> color = 5592405
(相当于-16777216 / 3)
会有用吗?
答案 0 :(得分:1)
如果您的矩阵是灰色的,那么R = G = B值。
让我们采用最不重要的“字节”并根据它进行测试。
int c = colore & 0xFF;
c应该是0到255之间的值。
66%:
if ((float)c > 255.0f*0.66f)
使用小数字更容易。试试并发布结果。