Ich habe ein kleines Problem, ich habe einen Code, der alle Pixel liest und die RGB-Farbe des Pixels nimmt. Aber zuvor habe ich das Bild in Stücke geschnitten, damit ich auch größere Bilder berechnen kann, ohne den Speicher zu überschreiten. Hier ist der Code:Get x, y Position eines bestimmten Pixels
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
try {
decoder_image = BitmapRegionDecoder.newInstance(filePath,
false);
} catch (IOException e) {
e.printStackTrace();
}
try {
boolean bool_pixel = true;
final int width = decoder_image.getWidth();
final int height = decoder_image.getHeight();
// Divide the bitmap into 1100x1100 sized chunks and process it.
// This makes sure that the app will not be "overloaded"
int wSteps = (int) Math.ceil(width/1100.0);
int hSteps = (int) Math.ceil(height/1100.0);
Rect rect = new Rect();
for (int h = 0; h < hSteps; h++) {
for (int w = 0; w < wSteps; w++) {
int w2 = Math.min(width, (w + 1) * 1100);
int h2 = Math.min(height, (h + 1) * 1100);
rect.set(w * 1100, h * 1100, w2, h2);
bitmap_image = decoder_image.decodeRegion(rect,
null);
try {
int bWidth = bitmap_image.getWidth();
int bHeight = bitmap_image.getHeight();
int[] pixels = new int[bWidth * bHeight];
bitmap_image.getPixels(pixels, 0, bWidth, 0, 0,
bWidth, bHeight);
for (int y = 0; y < bHeight; y++) {
for (int x = 0; x < bWidth; x++) {
int index = y * bWidth + x;
int R = (pixels[index] >> 16) & 0xff; //bitwise shifting
int G = (pixels[index] >> 8) & 0xff;
int B = pixels[index] & 0xff;
total++;
if (R == 255){
//Save x,y position
}
if ((G > (R+2)) && (G > (B+2))) {
counter++;
}
}
}
} finally {
bitmap_image.recycle();
}
}
}
} finally {
decoder_image.recycle();
}
Dies funktioniert wie ein Charme. Hatte einige Informationen aus dem Internet, und ich habe dies für meinen eigenen Code neu gemacht.
Aber was will ich jetzt, das heißt: wenn er einen "vollen" roten Pixel (255) erkennt, muss er die x, y Position dieses Pixels anzeigen.
Ich dachte, das war sehr einfach zu machen, aber weil ich das Bild in Chucks geschnitten habe, bekomme ich sehr seltsame x, y Positionen (was ich denke).
Ich werde schnell erklären, warum ich das will: Im Bild sind es 2 rote Pixel, und diese 2 müssen in ein Rechteck umgewandelt werden, aber ich bekomme nicht die guten x, y Positionen.
So um die Frage zu klären: Wie bekomme ich die x, y-Position des roten Pixels.
Vielleicht sehr einfach, aber irgendwie bekomme ich einfach nicht den richtigen Ort, nicht einmal in der Nähe. Ich überprüfe das, indem ich das Bild in Photoshop öffne und schaue, was das x, y des roten Pixels ist, aber meine App gibt sehr seltsame Koordinaten.
Wenn Sie weitere Informationen oder etwas anderes benötigen, bitte Kommentar.
Danke schon, Bigflow
Also müssen Sie einen Algorithmus erstellen, der die Pixelposition berechnet? – Th0rndike
Jacks Antwort war korrekt – Bigflow