私はandroidndkを初めて使用します。
ラッカスと、IBMブログによる画像処理の例から学び始めました。以下の行が数行ありません。コードスニペットを理解するのを手伝ってくれる人はいますか? `
static void brightness(AndroidBitmapInfo* info, void* pixels, float brightnessValue){
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
red = (int) ((line[xx] & 0x00FF0000) >> 16);
green = (int)((line[xx] & 0x0000FF00) >> 8);
blue = (int) (line[xx] & 0x00000FF );
//manipulate each value
red = rgb_clamp((int)(red * brightnessValue));
green = rgb_clamp((int)(green * brightnessValue));
blue = rgb_clamp((int)(blue * brightnessValue));
// set the new pixel back in
line[xx] =
((red << 16) & 0x00FF0000) |
((green << 8) & 0x0000FF00) |
(blue & 0x000000FF);
}
pixels = (char*)pixels + info->stride;
}
}
`
static int rgb_clamp(int value) {
if(value > 255) {
return 255;
}
if(value < 0) {
return 0;
}
return value;
}
RGB値がどのように抽出され、このrgb_clampがどのように実行されるのか。新しいPixellを設定する理由と、pixels =(char *)pixels + info-> stride; 動作しますか?私はac/c ++の人ではなく、画像処理の知識もあまりありません。ありがとう