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坐标'。 –