У меня есть небольшая проблема, у меня есть код, который читает все пиксели и берет RGB-цвет пикселя. Но до этого я разрезал изображение на куски, поэтому я также могу рассчитать большие изображения, не превышая памяти. Вот код:Получить x, y позицию определенного пикселя
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();
}
Это работает как шарм. Имел некоторую информацию из Интернета, и я переделал это для своего собственного кода.
Но что я хочу сейчас, то есть: когда он обнаруживает «полный» красный пиксель (255), он должен показать позицию x, y этого пикселя.
Я думал, что это было очень легко сделать, но поскольку я разрезал изображение на патроны, я получаю очень странные позиции x, y (что я думаю).
Я объясню, почему я хочу это: на изображении их два красных пикселя, а те 2 должны быть преобразованы в прямоугольник, но я не получаю хорошие позиции x, y.
Так что, чтобы выяснить вопрос: как получить расположение x, y красного пикселя.
Возможно, очень легко, но почему-то я просто не получаю нужное место, даже не закрываю. Я проверю это, открыв изображение в Photoshop и посмотрю, что такое x, y красного пикселя, но мое приложение дает очень странные координаты.
Если вам нужна дополнительная информация или еще что-нибудь, прокомментируйте.
Благодаря уже Bigflow
Итак, вам нужно создать алгоритм, который вычисляет положение пикселя? – Th0rndike
Ответ Джека был верным – Bigflow