2
Android中的getPixels()在上下左右或左右上下讀取像素。基本上它是按行或列讀取的。如果我想告訴圖片中紅色值越高,我可以這樣做(我認爲它是按列讀取的)。如何檢測位圖中的紅色像素
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
imgTakenPhoto.setImageBitmap(thumbnail);
int[] pixels = new int[thumbnail.getHeight()*thumbnail.getWidth()];
thumbnail.getPixels(pixels, 0, thumbnail.getWidth(), 0, 0, thumbnail.getWidth(), thumbnail.getHeight());
Colered[] color = new Colered[pixels.length];
int length = pixels.length;
int width = thumbnail.getWidth();
int height = thumbnail.getHeight();
for(int i=0; i<pixels.length;i++){
color[i] = new Colered(getRed(pixels[i]),getBlue(pixels[i]),getGreen(pixels[i]));
System.out.print(color[i].red + " ");
}
int indice=-1;
int greatest = -1;
for(int i=0;i<length-1;i++){
if(color[i].red> greatest){
greatest = color[i].red;
indice = i;
}
}
public static int getRed(int color){
return (color >> 16) & 0xFF;
}
我用c#編寫了一個類似於你正在做的事情的程序,我注意到的一件事是紅色在圖片中很少是紅色的,你必須給它一個可能的紅色範圍,或許使用RGB,其中R大於X且G和B小於Y,例如。 – Eliseo
將位圖轉換爲像素數組,然後遍歷它並找到紅色像素(如果有的話)! –
'Android中的getPixels()在左上角,左右上下讀取像素。基本上它是按行或列** ** NO **讀取的。它讀取'特定的x,y座標'。 –