加工过程中的自然色彩混合



我试图通过将两张不透明且着色的照片放在一起,将一张照片(大象(上的绿色色调和另一张照片上的红色色调自然混合。虽然两张照片看起来都具有同等的突出度,但当程序运行并且可以观察到两种颜色时,红色色调(因为这是最后应用的色调(更为突出,并且无论首先应用哪种色调,图像中都没有可辨别的黄色。如果有人知道如何在处理过程中自然地混合颜色,我很乐意听取你的建议。我也不想简单地应用黄色色调作为最后的色调。谢谢

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); 
}

将处理视为绘画。你现在所做的有点像在屏幕上画一种颜色,然后在第一种颜色的上面画另一种颜色。

相反,您要做的是将两种颜色混合在一起,然后将结果绘制到屏幕上。把这看作是把两种颜料混合在一起,形成一种新的颜色。

你可以通过取两种颜色的平均值来做到这一点,比如:

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);
}

这个例子有点做作,因为平均值很琐碎,但这种方法应该适用于任何颜色。

如果您想要更高级的东西,请注意颜色平均是一个非常高级的主题。在谷歌上搜索"颜色平均"可能是一个好的开始。

最新更新