I am supposed to posterize an image with purple and green. This is the code I am working with. I am trying to set the pixel at the current index to r,g,b.
What exactly does it mean to::: set the pixel at the current index to r,g,b.
PImage img;
public void setup() {
size(468, 311);
img = loadImage("presents.jpg");
for (int i = 0; i < img.pixels.length; i++)
{
color c = img.pixels[i];
float r = red(c);
float g = green(c);
float b = blue(c);
img.pixels[i] = color(r, g, b);
int grayAmount;
grayAmount = (int)Math.round((r * 0.299) + (g * 0.587) + (b * 0.114)) ;
if ( grayAmount < 64 )
{
r = 0;
g = 0;
b = 255;
} else if ( grayAmount < 128 )
{
r = 255;
g = 0;
b = 255;
} else if ( grayAmount < 192 )
{
r = 0;
g= 255;
b = 0;
} else
{
r = 255;
g = 255;
b = 0;
}
}
img.updatePixels();
image(img, 0, 0, width, height);
}
public void draw()
{
}
well you are already accessing and setting the pixel at index i in this section of the code.
color c = img.pixels[i];
float r = red(c);
float g = green(c);
float b = blue(c);
img.pixels[i] = color(r, g, b);
At this point you’ve just grabbed the individual rgb values of the pixels and you’ve put them straight back in to the pixel without any changes. If you want to make further changes to your pixel you’ll have to call img.pixels[i] = color(r, g, b); but only after the r or g or b values have changed.
I wasn’t 100% sure what “posterize” really means, so I looked it up.
So basically it’s reducing the bit depth in some way.
One way is to have the “continuous” (integer) range 0 - 255 be not so continuous, but go in some larger steps like every 16th step for example (collect all 0-15 as just 0, 16-31 as 16, 32-47 as 32 etc. Basically integer division by some number (discarding decimals), then multiply result by same number).
c = (c/16) * 16
Or some other method.
Maybe the task you have is to produce two versions, one posterizing the purple and one the green colors?
Btw, you may or may not have known what “posterize” is, but it’s unclear from your post.
Also, the title is useless and says nothing about what you want to know, unless one opens and read the post (I’d suggest editing it, you may get more responses that way too).