В настоящее время я разрабатываю приложение для Android, которое связано с некоторой обработкой изображений. После некоторых исследований, которые я сделал, я обнаружил, что лучше использовать Android NDK для обработки растровых изображений для хорошей производительности. Итак, я нашел некоторые основные примеры, как это:Android растровые операции с использованием ndk
static void myFunction(AndroidBitmapInfo* info, void* pixels){
int xx, yy, red, green, blue;
uint32_t* line;
for(yy = 0; yy < info->height; yy++){
line = (uint32_t*)pixels;
for(xx =0; xx < info->width; xx++){
//extract the RGB values from the pixel
blue = (int) ((line[xx] & 0x00FF0000) >> 16);
green = (int)((line[xx] & 0x0000FF00) >> 8);
red = (int) (line[xx] & 0x00000FF);
//change the RGB values
// set the new pixel back in
line[xx] =
((blue << 16) & 0x00FF0000) |
((green << 8) & 0x0000FF00) |
(red & 0x000000FF);
}
pixels = (char*)pixels + info->stride;
}
}
Я использовал этот код и он работает очень хорошо для основных операций, но я хочу, чтобы сделать более сложный, как фильтр, где мне нужно получить доступ выше и ниже пикселей от текущего пикселя. Чтобы быть более конкретным, я приведу вам пример: для операций по расширению и эрозии мы перемещаемся по пикселям, и мы проверяем, находятся ли пиксели с севера на запад, север, северо-восток, запад, восток, юго-запад, юг и юго-восток (для 8 соседей) - это пиксели объектов. Мне нужно знать, как я могу получить доступ к значениям северного и южного пикселей, используя приведенный выше код. Я не очень хорошо разбираюсь в обработке изображений, используя C (указатели и т. Д.).
Спасибо!