Естественное смешивание цветов при обработке - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь естественным образом смешать зеленый оттенок на одной фотографии (слон) и красный оттенок на другой фотографии (корабль), поместив две непрозрачные и тонированные фотографии друг на друга. В то время как обе фотографии выглядят одинаково заметно, при запуске программы и наблюдении обоих цветов красный оттенок (потому что это последний примененный оттенок) является более доминирующим, и на изображении нет заметного желтого цвета, независимо от того, какой оттенок является применяется первым. Если кто-нибудь знает, как естественным образом смешивать цвета при обработке, я хотел бы услышать ваш совет. Я также не хочу просто применять желтый оттенок в качестве последнего оттенка. Спасибо!

PImage elephant;
PImage ship;
void setup(){
   size(695,473);
   elephant = loadImage("elephantRider.png");
   ship = loadImage("ship.jpg");
   ship.filter(OPAQUE);
   elephant.filter(OPAQUE);
}
void draw(){
   background(255);
   tint(0,255,0, 127);
   image(elephant, 0,0);
   tint(255,0,0,127);
   image(ship, 0,0); 
}

1 Ответ

0 голосов
/ 17 ноября 2018

Думайте об обработке как о живописи. То, что вы делаете сейчас, немного похоже на рисование одного цвета на экране, а затем рисование другого цвета поверх первого цвета.

Вместо этого вам нужно смешать два цвета вместе до того, как вы отобразите результат на экране. Думайте об этом как о смешивании двух красок, чтобы получить новый цвет.

Вы можете сделать это, взяв среднее из двух цветов, примерно так:

PImage img;

void setup() {
  size(695, 473);
  img = loadImage("image.jpg");
}

void draw() {
  background(255);

  //green
  tint(0, 255, 0, 127);
  image(img, width/2, height/2, 50, 50);

  float blendedRed = (0 + 255) / 2;
  float blendedGreen = (255 + 0) / 2;
  float blendedBlue = (0 + 0) / 2;

  // blended
  tint(blendedRed, blendedGreen, blendedBlue, 127);
  image(img, mouseX, mouseY, 50, 50);
}

Этот пример немного надуманный, потому что средние значения довольно тривиальны, но этот подход должен работать для любого цвета.

Если вы хотите что-то более продвинутое, учтите, что Усреднение цвета - довольно сложная тема. Погуглите «усреднение цвета», вероятно, хорошее начало.

...